home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
flst200.zip
/
FASTLST.INF
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1997-06-19
|
183KB
|
7,149 lines
ΓòÉΓòÉΓòÉ 1. Readme First ΓòÉΓòÉΓòÉ
FastLst Readme First
Development of V7/V7+ programs
How to develop programs that use the Version 7 nodelist:
If you are interested in developing programs that access the V7
nodelist, you can find all the necessary information in the
BinkleyTerm 2.60 sources (BSRC_260.ZIP) or you can use the OS/2
DLL provided by Jim Dailey (V7NL.ZIP); both files are
requestable from 2:332/504@fidonet.
For a criterion to avoid problems in concurrent access to the
V7/V7+ files while FastLst is building/renaming them, please see
"V7+ Semaphore" in the V7Plus.Doc file.
Version 7 Plus format
For information about the new extensions to Version 7, please
see "Version 7 Plus" or the V7Plus.Doc text file.
ΓòÉΓòÉΓòÉ 1.1. Files in the archive ΓòÉΓòÉΓòÉ
Files in the original archive:
File_Id.Diz The standard description
Fastlst.Exe The executable
FastLst.Ico An Icon for FastLst
FastLst.Inf The Inf documentation
Readme.1st This file
Whatsnew.Txt Fixes and additions
Fast_Min.Cfg The sample minimal configuration file
Fast_Ful.Cfg The sample full configuration file
Compress.Cfg The sample compression definition file
FastLst.Doc The Ascii documentation
License.Doc The License
Register.Doc The Registration Docs
Register.For The Registration Form
BmtMicro.For The BMT Micro registration form
PsL.Crd The PsL Credit Card registration form supplement
V7Plus.Doc The Version 7+ standard
v7p_src.zip The Version 7+ example source code
OS/2 Only
FastLst2.Ico An Icon for FastLst/2, by Andrea Vavassori
Dos Only
Dos4Gw.Exe Dos Extender (major releases only)
Dos4Gw.Doc If you have a maintenance release of the program,
the dos extender will not be included, to avoid
unnecessary distribution costs.
The OS/2 Inf manual is provided with other versions too,
since there are INF viewers under Dos. For example, the very
nice viewer by Damir Ujcic: VIEW01.ZIP, available for F/R from
2:332/504@fidonet: it contains a text mode viewer in both OS/2
and Dos versions.
ΓòÉΓòÉΓòÉ 1.2. Whatsnew ΓòÉΓòÉΓòÉ
Whatsnew
If you are using an older version of the program, please read
WhatsNew.Txt before using this version.
ΓòÉΓòÉΓòÉ 1.3. How to contact the author ΓòÉΓòÉΓòÉ
How to contact the author
If you have suggestions, bug reports, observations about the
docs, please feel free to contact me at the following
addresses:
Alberto Pasquale of 2:332/504@fidonet
alberto.pasquale@interbusiness.it
2:332/504@fidonet +39-59-246112 X75 V120 X2 V34+ VFC V32T H16
Fax: +39-59-246113
Alberto Pasquale, Viale Verdi 106, 41100 Modena, Italy
IMPORTANT: if you call crash and require an answer, please state
whether you want it routed (might not be reliable) or ON HOLD
(in which case an answer should be available in 48h maximum,
apart from the holiday periods).
ΓòÉΓòÉΓòÉ 1.4. Support ECHO ΓòÉΓòÉΓòÉ
Support ECHO
I am originating an international support echo for all my
programs. If you are interested, please ask your echo feeder to
find a suitable link for the APWORKS area. In addition, I
regularly read the international OS2BBS echo.
ΓòÉΓòÉΓòÉ 1.5. TIC distribution ΓòÉΓòÉΓòÉ
TIC distribution
All my BBS related programs are distributed via a TIC file area.
If you want to join, please ask your file feeder to find a
suitable link for the APBBS (OS/2), APBBSDOS (Dos),
APBBSWIN (W32) areas.
Public Beta versions are distributed without restrictions in
APBBSBETA.
There are also APTOOLS for 3rd party tools related to APWORKS
programs and APWORKSG for German documentation by Roland
Schiradin.
ΓòÉΓòÉΓòÉ 1.6. APWorks Programs and Support Areas ΓòÉΓòÉΓòÉ
Where to look for
APWorks Programs and Support Areas
In North America the APWORKS support echo should be easily
available, since it is on the Zone 1 backbone.
The following systems carry the ApWorks echo and file areas:
Author's
APWORKS
Alberto Pasquale, Modena, Italy
alberto.pasquale@interbusiness.it
2:332/504@fidonet +39-59-246112 X75 V120 X2 V34+ VFC V32T H16
File requests could be declined between 23:00 and 06:00 GMT.
Request APFILES for a (short) list of APWORKS files only.
Europe
ApWorks_Germany
Roland Schiradin, Eltville, Germany
schiradi@tap.de
2:2454/169@fidonet
Cyberia/2
Harald Kamm, Bamberg, Germany
2:2490/3045@fidonet
Air Applewood
Vince Coen, Roydon, Harlow, Essex, United Kingdom
2:257/609@fidonet
North America
COMM Port OS/2
Bob Juge, Sugar Land, TX, USA
bob@juge.com
1:106/2000@fidonet
Common Sense
Mike Burgett, Newark, CA, USA
burgett@cmnsens.zoom.com
1:215/705@fidonet
Eclectic Lab 1
Mary-Anne Wise, New Westminster, BC, Canada
1:153/831@fidonet
Filebone: MaxFDN
Available via Planet Connect, PageSat, Filebone,
paonline ftphub and the Filegate Project.
Australia
Tardis BBS
Malcolm Miles, North Balwyn, VIC, Australia
3:633/260@fidonet
ΓòÉΓòÉΓòÉ 1.6.1. File Areas on the Internet ΓòÉΓòÉΓòÉ
File Areas on the Internet
USA
ftp.juge.com
cmnsens.zoom.com
/pub/apworks/bbs
/pub/apworks/bbsdos
/pub/apworks/bbswin
/pub/apworks/tools
/pub/apworks/beta
ftp.oeonline.com
/pub/Maximus
ftp.bmtmicro.com
/bmtmicro
Only the public release versions of programs that can be
registered via Bmt Micro.
ΓòÉΓòÉΓòÉ 1.7. Latest Versions ΓòÉΓòÉΓòÉ
How to Request the
Latest Version of APWORKS Programs
The following magics are honoured by APWORKS and some of the
support sites:
Magic Name Description
APFILES ApFiles.Lst List of Programs by Alberto Pasquale
FASTLST FLST???.RAR OS/2 The ultimate v7+ Nodelist processor.
Fully automated processing and
maintenance, no need for clumsy batch
files. Can report to Squish or *.MSG
areas, multitasking friendly, many
options.
FASTLSTD FLSTD???.RAR DOS
FASTLSTW FLSTW???.RAR NT
FASTLSTG German Docs by Roland Schiradin
Available on 2:2454/169
NEF NEF???.RAR OS/2 TIC file distribution and
announcement for Binkley-style
outbound and *.MSG or Squish message
base, file-Areafix included with
FileBone support, full multitasking
aware (BSY, file sharing etc.),
exceptionally flexible Multi-Aka
support.
NEFD NEFD???.RAR DOS 32 bit only, w DOS4GW extender.
NEFW NEFW???.RAR NT
NEFG German Docs by Roland Schiradin
Available on 2:2454/169
FLM FLM???.RAR OS/2 File List Manager for Maximus,
very flexible way of compiling
many different lists at a time.
Internal file base support
(no need for FBP).
FLMD FLMD???.RAR DOS 32 bit only, w DOS4GW extender.
FLMW FLMW???.RAR NT
NMFW NMFW???.RAR OS/2 Multi-Robot: netmail forward to
Sysop's point, Maximus user and file
management via netmail messages,
areafix for squish, point routing to
their boss if no phone number for
them in the nodelist, etc.
NMFWD NMFWD???.RAR DOS 32 bit only, w DOS4GW extender.
NMFWW NMFWW???.RAR NT
QFB QFB???.RAR OS/2 Substitute for FBP.EXE
Generates a separate file-request
index with no duplicates.
QFBD QFBD???.RAR DOS 32 bit only, w DOS4GW extender
QFBW QFBW???.RAR NT
QFBG German Docs by Roland Schiradin
Available on 2:2454/169
SQPRV SQPV???.RAR OS/2 Local area (private/public) forward
to points for Squish. The (Co)SysOp
points can receive the whole area.
SQPRVD SQPVD???.RAR DOS
----- SQFM110.RAR OS/2 Allows to change the "from address"
of PKTs before they are compressed.
To be used with Squish.
For example, it is useful to Hub
coordinators who want to continue
processing mail with their primary
address for current links while
processing with the administrative
address for their uplink BackBone.
FreeWare.
----- SQFMW110.RAR NT
----- HBRT110.RAR OS/2 Useful to coordinators (above HCs)
that use Squish. Automatically
updates the Hub definitions in
ROUTE.CFG taking the data from a V7
nodelist.
----- HBRTD110.RAR DOS
----- HBRTW110.RAR NT
----- SqSetAll.Rar OS/2 Sets renum limits in all Squish Areas
taking the parameters from
Squish.Cfg.
----- SqSetDos.Rar DOS Dos version.
----- AdjFDate.Rar OS/2 Changes by +-N days the File Date.
Can choose between Creation and
Modification dates on HPFS.
Show and Touch options.
----- AdjF_Dos.Rar DOS Changes by +-N days the File Date.
Current versions (June 19th 1997): NEF 2.38, FastLst 2.00,
FLM 1.40, NMFWD 2.07, QFB 1.10, SQPrv 1.04.
ΓòÉΓòÉΓòÉ 1.8. Bug Reports ΓòÉΓòÉΓòÉ
Bug Reports
If you find out a real bug, I will do my best to fix it and make
the new version available in a few days. To do that, I need your
cooperation: when you find a strange behaviour, double check
your configuration and the manual to be really sure it's not
your fault, then study the conditions in which the bug appears
and, in the end, send me your detailed report about the bug
together with your config file and all the stuff necessary to
replicate the problem. I can fix a bug only if I am enabled to
reproduce it !
ΓòÉΓòÉΓòÉ 1.9. Wish List ΓòÉΓòÉΓòÉ
Wish List
To help me provide a better and better program, please let
me know your problems and your wishes about future versions.
Please let me know your opinion:
Alberto Pasquale 2:332/504@fidonet
alberto.pasquale@interbusiness.it
BBS: +39-59-246112 X75 V120 X2 V34+ VFC V32T H16
Fax: +39-59-246113
Viale Verdi 106
41100 Modena
Italy
ΓòÉΓòÉΓòÉ 2. Whatsnew ΓòÉΓòÉΓòÉ
FASTLST
Changes and Additions
ΓòÉΓòÉΓòÉ 2.1. 2.00 ΓòÉΓòÉΓòÉ
2.00 Public Release, June 19th 1997
- WARNING: this is not a Drop-In replacement.
Some statements have been dropped.
New Features
- Support for new V7+ nodelist format, via the "Version7+"
statement.
To enable V7+, just use "Version7+" in the place of
"Version7".
Version7+ <path> <nodex> [<sysop>[.<ext>]]
Examples:
Version7+ \bbs\v7 NODEX SYSOP
Version7+ \bbs\v7 NODEX
If SysOp is not specified, <NODEX>.SDX is assumed.
Generated files:
<nodex>.DAT
<nodex>.NDX
<nodex>.DTP V7+ data file
<nodex>.PDX Phone Index
<nodex>.SDX or as specified by <sysop>
- The DTP file is linked "in memory" by default.
Since this can be a quite memory hungry task, FastLst
will automatically revert to "On Disk" linking mode if
there is not sufficient memory.
- New LinkOnDisk statement (after Version7) to make
FastLst link the DTP file using Disk instead of memory.
Version7+ \bbs\v7 NODEX
LinkOnDisk
- New errolevel 17 "Error Linking"
- Additional arguments for "Nodelist" statement:
Nodelist <list> [PartAddr [<region> [<hub>]]]
Since FastLst links the "fidonet" hierarchy, it is
important to specify region and hub when the nodelist
segment does not contain this type of information.
- Additional arguments for the "NODE" keyword:
Node,<4Daddr>[ <region>[ <hub>]],...
- It is now possible to assign call and user costs
depending on modem type for Verbatim phone numbers.
In the Typedef lines you can configure the costs:
Typedef
[...]
VMODEM 200 100 0
[...]
End
The call cost is 100, the user cost is 0.
- It is now possible to configure special dial
translations for non-PSTN "phone numbers" that FastLst
takes "verbatim" by default.
These dial translations DO NOT affect the indexed entry
(in <NODEX>.PDX) and are intended as a work around for
the dial translations operated by the mailer program.
The syntax requires a set of strings to be put on the
Typedef line that defines the affected "Modem Flag".
The first character of each string will be substituted
with the remaining characters.
A string containing space MUST be included in quotation
marks. If the quotation mark is needed inside the quoted
string, it must be double.
15 strings of 5 characters are allowed.
ATTENTION: This feature is only available in normal (non
BitType) mode.
Example:
You need to translate '.' to '*', ':' to ' ', 'v' to
'V'; call_cost=100, user_cost=0:
Typedef
[...]
VMODEM 200 100 0 .* ": " vV
[...]
End
You want to translate '.' to '\.', ':' to ' ', 'v' to
'V'; call_cost=150, user_cost=100:
Typedef
[...]
VMODEM 200 150 100 .\. ": " vV
[...]
End
Recommended dial translations for Binkley and VMODEM:
-\- .* vV ~\~ ": "
- New "digital" costs.
For people who want to differentiate analog and digital
costs.
In the Dial or Cost table you can indicate 2 more
fields; let's consider a Dial-table line
Prefix New Call User Comment
to Prefix Cost Cost
match
43 0043- 4 0 ; Austria
If you do not define the optional new fields, the
indicated costs are for both analog and digital.
43 0043- 4 0 8 0 ; Austria
In this line:
Analog Call cost = 4
Analog User cost = 0
Digital Call cost = 8
Digital User cost = 0
If the Digital User cost is omitted, it is taken equal
to the Digital Call one.
How can FastLst know about digital calls ?
A new parameter is available in Typedef:
Typedef
X75 1 DIGITAL ; X75 digital PSTN
V120 2 DIGITAL ; V120 digital PSTN
V34 3 ANALOG ; V34 analog PSTN
V32 4 ; V32 analog PSTN
VM 5 5 0 .* vV ": " ; VMODEM with costs and dial
; translations
End
The ANALOG specification is optional.
- Multiple PasswordFile statements now allowed without
restrictions.
- New statement "Include <filename>" to allow inclusion of
files in FastLst's configuration.
- New statement: NoPointLstPhone.
Can be used in Input, Output or Global blocks.
It is useful when you want to _remove_ the phone numbers
specified in the PointLists (German or "Boss" styles)
and change them to "-Unpublished-".
If you use Squish and Binkley, you usually will like
pointlists with the Boss' phone in the point entries
(otherwise a crash message to a point will have to be
manually readdressed to its Boss).
But if you use a netmail manager (as NmFwd) that already
routes the crash messages for points that do not have a
phone to their Boss, then you will probably like this
statement.
- New statement: LogStats.
Can be used in the output section of an output block.
It makes FastLst output the statistics for the (output)
nodelist to MsgLogArea.
Example:
Version7...
LogStats
Dropped Support
- Dos 16 bit version dropped.
The 32 bit version has the following memory
requirements: 100K of base memory, 7MB of DPMI for 60000
nodes.
- Now indices are always processed in memory: dropped
"FileMode" and "TmpPath" configuration statements and
"-t" command line switch.
- Dropped support for SysOpLst, SysDup and IncSysOp
configuration statements: the SysOp index will always
contain all the entries that are compiled to
<nodex>.DAT.
- Dropped NoDash keyword: no use.
- The '#' does not mean "take the phone verbatim" anymore.
Now any phone containing non-numeric characters is taken
verbatim.
- Dropped support for stripping flags in Dial/Cost table.
- ATTENTION: The "separate Cost Table" and the "BitType"
options are still supported in this version of FastLst
but are considered obsolete and their support will be
dropped in the future.
Changed Behaviour
- When a timeout happens accessing the BSY semaphore,
FastLst now proceeds with the following "Output Block"
(previously it aborted).
- In the case FastLst terminates with errorlevel 12 or 14,
next time it will retry compilation, as expected
(previously it had to be forced with -f in case of
errorlevel 12).
Bug Fixes
- When Version7 specified a path containing the '.'
character, FastLst didn't add the default ".NDX"
extension to the SysOp index filename.
Fixed.
ΓòÉΓòÉΓòÉ 2.2. 1.36 ΓòÉΓòÉΓòÉ
1.36 Public Release, July 18th 1996
- "LocalValues" can now be used multiple times for
users at the crossroads of multiple area codes.
See the docs under "Dial Table".
- The "Phone" statement has been extended to:
Phone <Addr> [#]<Phone> [<NodeFlags> [<Cost> [<UCost>]]]
- Phone specifications starting with '#' are taken
verbatim (no dial translation, no cost look-up); this
may be handy for internet addresses and script names.
- New statement "CostVerbatimPhone <cost> <ucost>" to
specify default costs for "verbatim" phone
specifications.
ΓòÉΓòÉΓòÉ 2.3. 1.34 ΓòÉΓòÉΓòÉ
1.34 Public Release, July 1st 1996
- OS/2: New statement "ArcDate Write|Creation" to choose
which date must be used by FastLst to compute the age
of archived nodelist files, defaults to Creation,
ignored by non-OS2 versions.
- New errorlevel 16: nothing found after unarchiving a
fixed-name nodelist.
- When dealing with fixed-name nodelists, FastLst now
always sets the archive date to the same value of the
included file.
- Under certain conditions the old versions of FastLst
might re-archive the original nodelist file, so that
it may fail TIC CRC-check when forwarded.
The problem arises when the following conditions are
satisfied at the same time:
- new nodelist archive file
- new configuration
- zipmethod includes the original archive type
- Improved documentation.
ΓòÉΓòÉΓòÉ 2.4. 1.33 ΓòÉΓòÉΓòÉ
1.33
- OS/2: Version 1.32 invoked the command processor when
executing external commands with no .exe or .com
extension specified, instead of trying to load the
executable directly.
This was due to an overlook of the DosExecPgm OS/2 API,
used to improve compatibility in the case of substitution
parameters containing "special" OS/2 characters.
Now FastLst tries to load the command as specified, then
it tries with .COM extension appended, in the end with
.EXE.
ΓòÉΓòÉΓòÉ 2.5. 1.32 ΓòÉΓòÉΓòÉ
1.32
- New "MultiLineDesc <nnn> [<c>]" statement for enabling
Multi-Line description support.
- New "FlagDef" table to associate nodelist flags to user
defined bits.
- In "Version7 <path> <Nodex> <SysopNdx>" you can now
specify an extension for <SysopNdx>.
If no extension is specified, ".NDX" is assumed if
<SysopNdx> is different from <Nodex>, otherwise the
".SDX" extension is used.
- New <nodex>.BSY V7 semaphore to avoid concurrent access
to nodelist files during compilation.
- New errorlevel 14 exit on timeout on V7 semaphore.
- The "MsgRem" used alone, will report all comment lines,
excluding the empty ones.
- Use of "Phone <addr> <newnumber>" for scripts and
internet addresses (not new, just explained):
Examples:
My country code is 39 (Italy) and the area code is 59
(Modena):
Phone 1:106/2000 39-59-#juge*com ; VMODEM address
Phone 1:123/4567 39-59-12*34*56*78 ; telnet IP address
Phone 2:245/6789 39-59-"Bob.scr" ; quoted script name
- Some configuration errors better flagged.
- V7 packing algorithm improved in speed.
- Dropped OS/2 16 bit version
- New NT version. Unfortunately it doesn't work under W95
(the external commands seem not to work so that nodelists
can't be packed/unpacked. Maybe when I will upgrade the
Watcom compiler, I will support W95 too.
- New icon FastLst2.Ico for OS/2.
- New Registration sites.
ΓòÉΓòÉΓòÉ 2.6. 1.31 ΓòÉΓòÉΓòÉ
1.31
- New "CostNullPhone <cost> [<ucost>]" global keyword, to
allow the specification of costs to be assigned to nodes
with empty (unpublished, etc.) phone number.
<ucost> defaults to <cost>.
If CostNullPhone is not used, <cost> defaults to 65535
and <ucost> to 0.
Example:
CostNullPhone 1000 0
Some programs might have bugs that cause problems dealing
with high costs (such as the default 65535). Should you
experience problems with entries that have a "NullPhone",
try setting a lower cost e.g. "CostNullPhone 900 0".
- Before applying a diff, the CRC of the OLD nodelist (as
reported in its first line) is compared to the one
reported in the diff file. Previously this check was not
done, so in the remote case you were applying a diff to
an illegal nodelist (e.g. a european diff to an american
nodelist), the error was discovered only at the end of
the application, when checking the CRC of the resulting
nodelist.
- Checks added to warn about illegal empty Cost or Dial
tables. Previously the program hanged.
- No more Access Violations when "ArcDiff" is used without
"NodeDiff" (it is a strange configuration, but it is now
legal).
- Fixed bug that caused access violation applying a
nodediff when using "NodeDiff" without "ArcDiff" (anyway
you are encouraged letting FastLst do all the work it is
designed for...).
- The number of archived nodelists to be kept (as specified
in the ArcList statement) is now checked a second time
after nodediff application, so that the required number
of archives is kept exactly. Previously, after nodediff
application, there was one archive more than specified.
- When specifying <ArcKeep> 0 in "ArcList", the nodelist is
not archived (previously was archived and then deleted).
- Changed Compress.Cfg to support the OS/2 RAR.
- Dos versions are now distributed with the same executable
names as the OS/2 versions: FASTLST.EXE (32 bit) and
FASTL16.EXE (16 bit).
ΓòÉΓòÉΓòÉ 2.7. 1.30 ΓòÉΓòÉΓòÉ
1.30
- WARNING: FastLst v 1.30 is NOT a true "Drop In"
replacement for v 1.20, anyway there is little to change:
- Add a "CompressCfg <squish_compress_cfg_file>" line to
the "Global Info" section of your fastlst.cfg.
- Remove all "Arc" and "UnArc" lines.
- In each "Input block" section where you would like to
be able to compress new nodelists (e.g. where Nodediffs
are processed and you were using "Arc" statements), add
one or more "ArcMethod <meth>,[<f>] ..." lines, where
<meth> represents one of the archiving methods defined
in <squish_compress_cfg_file> (e.g. ZIP, LH, etc.) and
the optional <f> is an override for the initial
character of the archived file extension (in the case
it is named after the day of the year and you do not
want to use the first character of the default
extension, as defined in <squish_compress_cfg_file>).
- See FastLst.Doc for more information.
- DOS: There is a new 32 bit version with the DOS4GW
extender.
- OS/2: There is a new 16 bit version for those who still
use OS/2 1.3.
- OS/2 32: the "Priority" statement can be used to change
the priority for the FastLst process.
- The 32 bit versions can now be configured to use the
temporary file instead of working in memory.
The "FileMode" statement and the "-t" command line switch
are used for selecting the mode.
- The routines used in 32 bit versions for "in memory" work
(no temporary file) have been completely rewritten in
order to need far less memory. This way, the 32 bit
versions usually allocate about 1/4 of the memory they
needed with v 1.20. This is an important issue on systems
with not too much physical RAM (especially for the DOS
version, that cannot efficiently use virtual memory), but
the benefits are noticeable even on systems with plenty
of RAM (less OS/2 swap reorganization when FastLst ends).
- The "TmpPath" config statement is no longer needed:
FastLst will use the TMP or TEMP environment variable if
no TmpPath statement is used.
- If you want FastLst to kill all uncompressed nodelist
(except for those that are not stored in compressed
format too), just add a "KillSource" line to the "Global
Info" section of FastLst.cfg.
- All the ArcList and Arcdiff statements can now work
WITHOUT the specification of the first letter of the
extension, i.e. "ArcList NodeList.z??" can be changed to
"ArcList NodeList.???" and "ArcDiff NodeDiff.z??" can be
changed to "ArcDiff NodeDiff.???". This way FastLst will
automatically handle any archive type that shows up in
the ArcList directory.
- Now all the nodelists and nodediffs can be maintained in
many different archived formats. The archiving method for
NodeDiffs must be specified using "ArcDiffMethod
<meth>,[<f>] ...".
- The "block" structure of the config file remains, but it
becomes a lot more flexible: the majority of config verbs
can now be anywhere in the config file, but they have
effect on different nodelists depending on their position
in the cfg. E.G.: "PasswordFile", being an address
related verb, can be both in the "Output Nodelist" and
"Input Nodelist" sections. If you use it after "Version7"
but before the first "NodeList", then it will be used for
all the NodeLists of that "Output block". If you use it
after a "NodeList", it will be used (as in the past) for
that Nodelist only. Other non-address related verbs (e.g.
ArcMethod) can be everywhere (global, output nodelist,
input nodelist) and the will affect the operations
depending on their position (global: all the nodelists;
output: all the nodelist in the current output block;
input: the current nodelist only).
- "NoRedir" verb: the nodes that should be redirected will
acquire the empty string as phone number, so that you
will never call a system different from that you think
you are calling.
- Many new verbs have been added to support external
operations; the names are self explaining:
BeforeArcList
AfterArcList
BeforeUnArcList
AfterUnArcList
BeforeUnArcDiff
AfterUnArcDiff
BeforeArcDiff
AfterArcDiff
All the preceding verbs support the %a (complete archive
name) and %f (add/extract file name, no path) parameters.
BeforeEdit
AfterEdit
The preceding verbs support the %l and %d parameters
standing for the full pathnames of the NodeList and
NodeDiff files.
BeforeCompile
AfterCompile
The preceding verbs support the %l parameter only.
BeforeKillSource
The preceding verb does not support any parameter.
It is executed even if "KillSource" is not used.
It is a means to invoke a command before FastLst ends.
The "NeededBeforeKill" verb must be used to specify the
NodeLists needed by this command.
See FastLst.Doc for more information.
- A new cfg section is now available: "NoCompile".
It is a means for maintaining a NodeList (applying
nodediffs, archiving with different archivers etc.)
without compiling it.
- The 3D German PointListst is now internally supported by
FastLst. Just use the "GermanPointList" verb in the
pertaining block.
- When all goes well, FastLst exists with errorlevel 0 if
it has compiled something, 100 if nothing new to compile
was found.
- New method for evaluating the age of a variable extension
arcfile: the file date is considered in addition to the 2
digits in the extension. This way you can keep a greater
number of old files without creating problems to fastlst,
even at the year crossing.
- File descriptions in FILES.BBS are now maintained
(deleted or added). New statements are available:
ArcListDesc <description>
ArcDiffDesc <description>
<description> can contain the following parameters:
%d day
%a archiver
%D date, USA format
%L Local date
- The dash is now recognized as insignificant while doing
the Dial and Cost translations.
- The line # is specified when reporting a config error.
- Some information about the compilation can now be
reported to a fido/squish message area: see FastLst.Doc
for a description for "MsgLogArea", "MsgRemArea" and
related statements.
- FastLst is now multitasking smarter: e.g. it retries for
15s when it has to delete the old compiled nodelists and
rename the new ones.
- New Export capability: FastLst is now able to "export"
segments of nodelist: see the "Export" section in the
docs.
- The Dial and Cost tables can be unified: the old syntax
is still supported, but a new way can be used for cost
and dial specifications. I think that Europeans can
continue using the old syntax (if they like), while the
Americans should appreciate the new way (due to the
complex dial translations needed).
- Fixed bug that caused access violations when no
"StatusLog" was used.
ΓòÉΓòÉΓòÉ 2.8. 1.20 ΓòÉΓòÉΓòÉ
1.20
- WARNING: FastLst v 1.20 is NOT a "Drop In" replacement
for previous versions; you MUST modify the config file
following the comments in it before using this version.
- In order to make available new powerful options without
using clumsy syntax and risking subtle side effects and
strange interactions, some obsolete features have been
dropped and the methods to specify the files to be
compiled have been modified.
- FastLst is faster than ever: on my system and with my
configuration, the OS/2 version is about 25% faster
than v 1.16.
If you time it, be aware that the OS/2 version optimizes
memory allocation (and speed) basing on the needs of the
previous compilation, so it is usually a bit slower on
the first run with a new cfg.
- The ancient "Version6" nodelist support has been
dropped. However the sometime-useful fidouser.lst is
still available.
- The "MergeList" and "Kill999" options have been dropped.
With version7 you can simply compile segments after the
full list, since updated entries are put in the indices
in the place of old ones.
- Added support for compiling multiple V7 nodelists
with different output names.
- Added support for automatic decompression of
nodelists and nodediffs: no more complex batch files.
- Now FastLst compiles an output nodelist only if some
of its input lists are new: the -f command line switch
has been added to force compilation.
- Pay Attention: version 1.14 introduced a new behaviour
in generating V7 indices to circumvent a bug in
Binkley 2.50 V7 search function.
Now Binkley 2.58 should have fixed the bug, so
FastLst goes back to the "correct" V7 index.
A new cfg option has been added to keep using the
"bug-circumvent" index form: see "V7BugFix" in the
example config file.
*******************************************************
* If you are using an older Binkley or some program *
* that have got inspiration from Binkley 2.50 sources,*
* you could experience "address not found" problems, *
* unless you explicitly activate the "V7BugFix" *
* option in fastlst.cfg. *
*******************************************************
- The "KillOld" and "AutoErase" verbs have been dropped.
Old nodelist and nodediff files are always erased.
You can control how many archived files are to be kept
via the new archive processing verbs.
- The -o -s -l -g -m -p -b command line switches have
been dropped since they are now useless.
- The "include" cfg keyword and the -i command line
switch have been dropped.
You can still include lists of passwords in a separate
file via the "PasswordFile" cfg keyword, that allows
to optionally omit the " Password" keyword in front of
each password specification.
- Due to the frequent misunderstanding of the real meaning
and function of the "Address" config option, I have
decided to drop it.
These days it is not much useful (in a nodelist
compiler), since many systems have various different
addresses and we are used to write addresses in the full
4D format to avoid ambiguities.
In the various config options that require an address
or a part of it, you now need to specify all the
required fields, always starting with the zone number:
no assumption is made on your zone/net/node.
- The obsolete "MaxBaud" and "Baud" verb have been dropped.
Should you use an old 2400 non error-correcting
modem that needs equal DTE and DCE rates, make sure
your front-end is configured to dial using its own
max baud rate instead of the baud rate reported by
the nodelist for the callee (AutoBaud in Binkley.cfg).
- The "Country" and "UCost" verbs have been dropped,
the "Dial" and "Cost" tables have been slightly modified
to specify domestic and international defaults in a more
coherent manner and to include "UCost" info.
- The "TypeExact" verb has been substituted by the
complementary "BitType" option.
Thus the default is now the "Exact Type" used by
Binkley 2.55 and newer.
- The "TypeCost" verb has been dropped.
It was used to differentiate CallCost basing on
modem type. This way, in a multi-line environment,
you could make each line call the appropriate modem
types.
To achieve the same goal, please use the front-end
dial string selection options (ModemTrans in Binkley).
- The totally useless "Name" and "Comments" options
have been dropped.
- The "Gated" config option has been dropped and the
"GateAddr", "GateCoord" verbs have been replaced by
"IncAddr", "ExcAddr", "IncCoord".
- The "Interlist" config option has been dropped.
It is substituted by the "IncSysOp" verb.
- The "Type" and "CM" keywords have been dropped.
Their functions are more cleanly implemented via
the "NodeFlags" verb.
- The "TypeDef" statement has been modified to a "table"
form, for better coherency.
- The addresses in Fidouser.Lst now always have the
heading zone number, even if it is the same as yours.
- Fixed little bug that could cause some cfg keywords
not to be recognized unless followed by a comment
ΓòÉΓòÉΓòÉ 2.9. 1.16 ΓòÉΓòÉΓòÉ
1.16
- Fixed bug in the Register routine that caused
some keys not to work (1 every 256).
ΓòÉΓòÉΓòÉ 2.10. 1.15 ΓòÉΓòÉΓòÉ
1.15
- Some programs skip the first entry in V6 nodelist,
assuming it is a dummy entry that contains the version
number of the nodelist. These programs could loose
the "zone number" of the first zone compiled, thus
assuming zone 0.
Now FastLst puts the "version ID" entry at the start
of nodelist V6.
ΓòÉΓòÉΓòÉ 2.11. 1.14 ΓòÉΓòÉΓòÉ
1.14
- Some programs do not correctly read V7 indices when
an empty node appears (This happens when a key has no
greater keys in the lower index level, so that it points
to an empty node).
Sometimes these programs could not find part of the
V7 nodelist entries.
Now FastLst adds a dummy duplicate key to avoid the problem.
- New "Node,<address>,..." keyword to allow
straightforwad addition of nodes without the need for
Zone and Host lines.
- Removed the Point flag in the output nodelist for
point 0 entries (after the "Boss,..." keyword).
ΓòÉΓòÉΓòÉ 2.12. 1.13 ΓòÉΓòÉΓòÉ
1.13
- When a totally empty line was found in a nodelist
file a strange undesired nodelist entry was compiled.
It was not a bug since FTS-0005 does not allow
empty nodelist lines, however it has been fixed
to avoid problems with private manually written
nodelist segments.
- The .DOC now reports an "undocumented" feature:
when using the "Boss,<address>" method for pointlists,
you can also use the point #0 to easily add the Boss
entry, if useful.
ΓòÉΓòÉΓòÉ 2.13. 1.12 ΓòÉΓòÉΓòÉ
1.12
- In the case of SysOps of multiple nodes, all the
Name/Address couples are now put in the SysOp
lists (fidouser.lst and sysop.ndx).
This new behaviour allows to use the great "address
choice" feature of TimEd (excellent Dos/OS2 message
editor by Gerard van Essen 2:281/527).
- New behaviour of "SysDup" option: since now all the
name-duplicate sysop entries are kept by default,
SysDup allows to keep (for a particular sysop name)
only the entry with one of the specified addresses.
- Many internal changes, not visible to users: if you
find out a new unexpected behaviour, please let me
know.
- Removed redundant empty lines in nodelist.prn and
nodelist.txt after comment lines.
ΓòÉΓòÉΓòÉ 2.14. 1.11 ΓòÉΓòÉΓòÉ
1.11
- CRC is now checked on all nodelist files that have
the expected CRC on the first line (previously it
was checked when applying nodediffs only).
- New errorlevel 10 for CRC Error while compiling
nodelist (errorlevel 9 is still used for CRC Error
while applying nodediff).
- When merging the first line is skipped if it contains
the CRC.
- New -r command line switch to avoid exit on CRC Error.
- New -s command line switch to override SYSOP.NDX
base name.
- Any file specification can contain drive and path,
including -n -d -o -s overrides.
- When using Version7 only, the added nodelist segments
are appended to the end of the full main nodelist
instead of the end of your zone.
- Some small changes in Nodelist.Prn and Nodelist.Txt
- Fixed bug introduced in v 1.10: when a region segment
(no zone entry) was compiled as the main nodelist,
zone 0 was erroneously assumed.
Now the address levels not present in the main nodelist
correctly default to the config address.
ΓòÉΓòÉΓòÉ 2.15. 1.10 ΓòÉΓòÉΓòÉ
1.10
- OS/2: First 32 bit version, compiled by BC++.
- OS/2: New "flat" index sorting (no more disk based
merge-sort).
- OS/2: "TmpPath" option in *.cfg not used any more.
- OS/2: Long filename support
- DOS: The "TmpPath" directory is now automatically
created when necessary.
- New improved Disk Full handling (errorlevel 4)
- New "-o<nodebase>" command line switch to override
output file names (NODEX.* -> <nodebase>.*).
- New "KillAfter" config verb, to save old nodelist files
in the case of compilation error.
- New "Boss <address>" statement for easier pointlist
support (see FastLst.DOC).
- New optional partial address parameter in
"MyList <nodefile> [default partial address]"
to allow the addition of nodelist segments without
the need of ZONE, HOST, node prefix lines (V7 only).
See FastLst.DOC for more details.
- New "-i<include>" command line switch to allow easier
different file inclusions.
- New "KillOld" config statement to kill old versions of
nodelist files.
- New "Kill999" config statement to kill the .999 file
that remains after merging with MergeList.
- Now the .999 file is killed whenever FastLst begins
execution, thus you do not have to manually delete it
if you stop using the MergeList command.
- Now the "Gated" config keyword prevents Hub coordinators
of other zones to be put in the output nodelist (only
ZC and NC remain).
- New "GateAddr" config keyword allows to have only
selected zones, regions and nets in the output files.
- New "GateCoord" config keyword allows to have in the
output files only selected coordinators from the excluded
zones, regions and nets.
- New errorlevel 9 exit after CRC error while applying
a nodediff. If "Autoerase" is active, the nodediff and
the resulting nodelist files are erased, otherwise they
are renamed to NODEDIFF.BAD and NODELIST.BAD.
- New "StatusLog" config statement to specify the log
filename in the .cfg instead of the command line.
- New "TypeExact" config option to set modem types in a
way more coherent with the behaviour of Binkley 2.55 and
newer.
- New "SysDup" config option to override FastLst's choice
when killing duplicate SysOp Names.
ΓòÉΓòÉΓòÉ 2.16. 1.06 ΓòÉΓòÉΓòÉ
1.06
- OS/2: Fixed bug that caused some reg. keys not to work.
- DOS: Fixed bug that sometimes caused memory problems
during index sorting.
ΓòÉΓòÉΓòÉ 2.17. 1.05 ΓòÉΓòÉΓòÉ
1.05
- New UCOST verbs to set User Cost Different from Call Cost.
- OS/2: Fixed bug that sometimes caused "Disk Full" error.
ΓòÉΓòÉΓòÉ 2.18. 1.04 ΓòÉΓòÉΓòÉ
1.04
- Changed redirection criteria: if you have a password with a
hold/unpublished system or its coordinator, then it is NOT
redirected; instead it gets an empty phone number string.
- Slightly changed the algorithm to choose the entry for
a multi-SysOp in Sysop.Ndx, so that he never gets data from
an entry that is not used due to local segment override.
- Added "Flags" Keyword to set the user defined bits.
- OS/2: Fixed a bug that caused a "NULL POINTER" error when
compiling only Version 6 and FidoUserLst.
ΓòÉΓòÉΓòÉ 2.19. 1.03 ΓòÉΓòÉΓòÉ
1.03
- Added <CR> before comment output to fix video output when
both comments and report are active, Thanks to Roberto
Zanasi.
- OS/2: First (16 bit) version, ported by Pasquale Cantiello.
ΓòÉΓòÉΓòÉ 2.20. 1.02 ΓòÉΓòÉΓòÉ
1.02
- Null pointer bug fixed in Merge module, Thanks to Pasquale
Cantiello.
ΓòÉΓòÉΓòÉ 2.21. 1.01 ΓòÉΓòÉΓòÉ
1.01
- Minor message and DOC adjusting.
ΓòÉΓòÉΓòÉ 2.22. 1.00 ΓòÉΓòÉΓòÉ
1.00
- First public release.
ΓòÉΓòÉΓòÉ 3. About FastLst ΓòÉΓòÉΓòÉ
**************************************************************
* *
* *
* ******* ** **** ****** **** **** ****** *
* ** * **** ** ** * ** * ** ** ** * ** * *
* ** * ** ** ** ** ** ** ** *
* **** ** ** **** ** ** **** ** *
* ** * ****** ** ** ** * ** ** *
* ** ** ** ** ** ** ** ** ** ** ** *
* **** ** ** **** **** ******* **** **** *
* *
* *
* Version 2.00 *
* *
* The ultimate V7+ nodelist processor *
* *
* *
**************************************************************
* *
* (C) Copyright 1992-1997 by Alberto Pasquale *
* *
* A L L R I G H T S R E S E R V E D *
* *
**************************************************************
FastLst 2.00 User's Manual, by Alberto Pasquale
ΓòÉΓòÉΓòÉ 4. Introduction ΓòÉΓòÉΓòÉ
INTRODUCTION
-> For licensing information, please see License.Doc.
Thanks for evaluating FastLst: the ultimate "Version 7+"
nodelist processor.
Version 7 is a common format for binary nodelists to be used by
mailers, message editors and all the programs that need fast
access to a compiled nodelist.
Version 7+ is fully compatible with V7 and adds lots of new
powerful features for V7+ aware applications.
ΓòÉΓòÉΓòÉ 4.1. Main Features ΓòÉΓòÉΓòÉ
Main Features
- Compiles to Version 7+ format nodelist.
- Support for Version 7.
- Support for old "Fidouser.Lst" sysop list.
- Multiple output nodelist (NODEX.*) compilation from one config
file.
- The complete maintenance of archived lists and diffs is
achieved through internal flexible configuration, with no need
for clumsy batch files.
- Uses "Squish Style" Compress.Cfg.
- Can be invoked from a batch file at predefined events: the
compilation will take place only if some new list/diff is
found.
- Multitasking friendly
- The OS/2 version allows for priority setting in the
configuration file.
- Compilation reports can be posted to Fido or Squish format
message areas.
- Full 4D (point) support, both via the "Point,..." and
"Boss,..." keywords.
- Internal support for "German type" pointlists.
- Easy addition of nodes via the "Node,<address>,..." keyword
in a private list.
- Easy specification of phone strings to be taken "verbatim"
for internet addresses and script names.
- In the case of SysOps of multiple nodes, keeps all the
name/address entries in the sysop index.
- User Cost (Msg Fee) can be set different from Call Cost.
ΓòÉΓòÉΓòÉ 4.2. Credits ΓòÉΓòÉΓòÉ
CREDITS
This program uses the Squish "MsgAPI" code, Copyright 1991-1994
by Lanius Corporation. "Squish" and "Maximus" are trademarks of
Lanius Corporation.
"BinkleyTerm" is a trademark of Bit Bucket Software Co.
"4OS2" is a trademark of JP Software Inc.
The archivers referred-to throughout this documentation are
Copyright and/or trademarks of the respective owners.
"VMODEM" and "SIO" are Copyright by Raymond L. Gwinn.
"U.S. Robotics" and "I-modem" are registered trademarks of U.S.
Robotics Access Corporation.
ΓòÉΓòÉΓòÉ 4.3. Overall Operation ΓòÉΓòÉΓòÉ
OVERALL OPERATION
FastLst has been designed to be invoked regularly from one of
your main batch files, after mail has been received or at
pre-arranged times at your pleasure: if any new (compressed or
not) nodelist/nodediff is detected, Fastlst processes them as
required (exiting with Errorlevel 0), otherwise it immediately
exits (errorlevel 100) with no further delay.
When FastLst detects a changed config or password file, it
compiles all the affected nodelists even if they are not new.
If you want FastLst to compile all of your nodelists even if no
new ones are present, you need to use the -f or -i command line
switch.
For each "output block" in the config file:
- New compressed lists or diffs are detected, unarchived and
optionally rearchived in supplementary formats.
- New diffs are detected and applied: the resulting new nodelist
is archived. Before applying a diff, the day number and CRC of
the old nodelist are compared against the ones requested by
the diff; after application, the CRC of the new nodelist is
checked.
- New lists are detected and the pertinent output nodelists are
rebuilt. If no new list is found for a specific "output
block", that output nodelist is not compiled, unless the -f or
-i command line switch is specified.
OS commands can be issued before or after each operation: for
example you can hatch the just created archive file.
ATTENTION:
- Every time a config file is changed, FastLst rebuilds all
the output nodelists, as if the -f command line switch were
specified.
- Every time a PasswordFile is changed, FastLst rebuilds the
nodelists that use it.
- The date of the archive files handled by FastLst is set to
the same value of the contained file (see ArcDate).
ΓòÉΓòÉΓòÉ 5. Input Nodelist Format ΓòÉΓòÉΓòÉ
INPUT NODELIST FORMAT
The source nodelists and nodediffs must be in standard "St.
Louis" format, as described in FTS-0005. Anyway, FastLst allows
some extensions in order to support 4D points, "German style"
pointlists, easy single node specifications and "verbatim" phone
strings.
ΓòÉΓòÉΓòÉ 5.1. 4D Point Support: POINT and BOSS Keywords ΓòÉΓòÉΓòÉ
4D Point Support: POINT and BOSS keywords
First method:
Points are entered in the nodelist directly following their
bossnode. Each one starts with the "Point,<point>" keyword.
Example:
...
...
,504,Videl,Modena_I,Roberto_Zanasi,39-59-450600,9600,CM,XA,V34
Point,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
Point,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,9600,
Point,3,Carta,Modena,Francesco_Carta,-!Unpublished-,9600,
...
...
Second method:
Points are entered in the nodelist following the
"Boss,<address>" keyword.
Example:
...
...
Boss,2:332/504
,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,9600,
,3,Carta,Modena,Francesco_Carta,-!Unpublished-,9600,
...
...
ΓòÉΓòÉΓòÉ 5.2. German Point List ΓòÉΓòÉΓòÉ
German Point List
This is a "normal" 3D nodelist that lists each Boss as a
"fakenet" HOST, with the real address as the system name,
followed by its points listed as nodes.
Example:
The following nodelist segment lists points 2:2400/1.1 .2 .3:
Host,20000,2400/1,City,Sysop_Name,49-951-999999,9600,CM,V34
,1,System_Name_1,City_1,Sysop_Name_1,49-951-999999,9600,
,2,System_Name_2,City_2,Sysop_Name_2,49-951-999999,9600,
,3,System_Name_3,City_3,Sysop_Name_3,49-951-999999,9600,
ΓòÉΓòÉΓòÉ 5.3. The NODE Keyword ΓòÉΓòÉΓòÉ
The NODE Keyword
Another extension over FTS-0005 is provided to allow easy
addition of nodes in small private lists.
When you need to add a node to your nodelist to call it or to
enforce a session password with it, you can use the
"Node,<address>[ <region>[ <hub>]],..." keyword to avoid the
necessity of adding the entries for its coordinators.
You should specify a full 4D address (point optional).
Any subsequent entry will take the current address as a starting
point.
E.g.: You want to add 9:888/777.3 of Region 88, Hub 700.
Please note that there is no need to specify Region and Hub
information when using the Node and Boss keywords, since:
- if the point's Boss is included via some other nodelist, the
Region and Hub information will be taken from its entry;
- if the point's Boss is not present in the compiled lists, this
point will be removed from the indices (in this case you may
want to use two entries for including both the Boss and the
point);
With "Node,...":
...
...
Node,9:888/777.3,System,City,SysOp,1-234-555-6666,9600,CM
...
...
With "Boss,...":
...
...
Boss,9:888/777
,3,System,City,SysOp,1-234-555-6666,9600,CM
...
...
With the traditional method:
...
...
Zone,9,...
Region,88,...
Host,888,...
Hub,700,...
,777,...
Point,3,System,City,SysOp,1-234-555-6666,9600,CM
...
...
Now let's add 8:101/611 and 8:101/612 in region 10, hub 600:
With "Node,...":
...
...
Node,8:101/611 10 600,System,City,SysOp,1-234-555-6666,9600,CM
,612,System,City,SysOp,1-234-555-6667,9600,CM
...
...
With the traditional method:
...
...
Zone,8,...
Region,10,...
Host,101,...
Hub,600,...
,611,System,City,SysOp,1-234-555-6666,9600,CM
,612,System,City,SysOp,1-234-555-6666,9600,CM
...
...
ΓòÉΓòÉΓòÉ 5.4. Verbatim Phones ΓòÉΓòÉΓòÉ
Verbatim Phones
When a phone entry contains non-numeric characters, it is taken
verbatim (i.e. no dial translation is applied to adjust the area
code and long distance or international prefixes).
Call defaults are defined by the CostVerbatimPhone statement.
Note: you might need to change the dots '.' in internet
addresses to asterisks '*', in order to avoid that the mailer
(e.g. Binkley) translates them: see TypeDef.
Examples:
Internet address:
,6,System,City,SysOp,Fantasy.Com,9600,CM,VM
IP address:
,6,System,City,SysOp,123.456.789.012,9600,CM,VM
Script name:
,6,System,City,SysOp,"Fantasy.Scr",9600,CM,V34
See also the Phone statement.
ΓòÉΓòÉΓòÉ 6. Miscellaneous Info ΓòÉΓòÉΓòÉ
MISCELLANEOUS INFO
ΓòÉΓòÉΓòÉ 6.1. Multiple Sysops ΓòÉΓòÉΓòÉ
Multiple Sysops
In the case of SysOps of more than one system, all the
name/address couples of compiled entries are output to the SysOp
index.
ΓòÉΓòÉΓòÉ 6.2. Redirected Systems ΓòÉΓòÉΓòÉ
Redirected Systems
Systems that have no valid phone number (Unpublished, on Hold),
are redirected, provided you do not exclude redirection using
the "NoRedir" config keyword.
A redirected system is given the phone number, baud rate, modem
type, cost and flags of the preceding coordinator, the Board
name is prepended with '-R-'.
If you have a session password with the system to be redirected
or with the system it should be redirected to, no redirection is
done in order to prevent password-mismatch errors in the case
the Unpublished/Hold system calls you.
Points are never redirected.
The systems that have no valid phone number and cannot be
redirected take an EMPTY phone number string, so that your
mailer does not send unexpected strings to your modem attempting
to call these systems, should something appear in your outbound
addressed to them.
Pay attention: if you want to directly call these
null_phone-systems or their coordinators, you have to give them
a phone number using the "Phone" statement in the configuration
file.
ΓòÉΓòÉΓòÉ 7. Installation ΓòÉΓòÉΓòÉ
INSTALLATION
1) There are 3 versions of FastLst:
OS/2, W32, DOS 32 (with DOS4GW DOS Extender), distributed in
separate archives (see Readme.1st).
Choose the one that fits you better.
2) Write your FastLst.Cfg.
You can find useful examples in the Fast_*.Cfg files and
detailed information in the "CFG REFERENCE" section of this
documentation.
3) Edit your batch file in order to call FastLst whenever you
would like to test for the presence of new list/diff files
and process them. If you do not pass a different pathname as
a command line parameter, FastLst.Cfg must reside in the
current directory.
4) (OS/2): Make sure you have the MSGAPI32.DLL in a directory
contained in your LIBPATH. MSGAPI32.DLL can be found in the
Squish 1.11 archive (SQSHP111.LZH).
(W32): Make sure you have the MSGAPINT.DLL in a directory
contained in your PATH. MSGAPINT.DLL can be found in the
Max 3.01 for Windows archive (MAX301N.ZIP).
(DOS32): Make sure you have the DOS4GW.EXE Dos extender (from
Tenberry Software Inc.) in your path.
The DOS4GW extender requires an XMS or DPMI memory driver
installed in your config.sys: e.g. HIMEM.SYS, QEMM (by
QuarterDeck Office Systems Inc.).
5) FastLst requires a lot of memory to compile long nodelists.
A set of input nodelists totalling 60,000 nodes requires
approximately 12MB for V7+ "in memory" compilation, 7MB when
using "on disk" DTP linking and 4.5MB for simple V7.
You have to decide whether to use the "LinkOnDisk"
statement in the configuration file. If you have enough
physical memory available you should use the default "in
memory" mode. On the other hand, if the execution of FastLst
is excessively slow, you probably are low on memory and you
could benefit by the use of "on disk" DTP linking.
(DOS): Even if "in memory" DTP linking is
configured, FastLst automatically switches to "on disk"
mode if it cannot allocate the needed memory.
If you experience "out of memory" errors, then you have to
enable the DOS4GW virtual memory mode, using the DOS4GVM
environment variable (e.g. for 16MB virtual allocation
size: SET DOS4GVM=VirtualSize#16384).
This works under real Dos only: if you are using OS/2 dos
sessions, use a higher DPMI_MEMORY_LIMIT in the Dos
settings.
Please note that FastLst tells you (on screen, in the
logs, in the report message) how much memory remains during
compilation, so that you can realize when you are running
in marginal conditions and consequently adjust your
configuration before you run out of memory.
ΓòÉΓòÉΓòÉ 8. Command Line Switches ΓòÉΓòÉΓòÉ
COMMAND LINE SWITCHES
-c<cfg>
Use <cfg> configuration file instead of FASTLST.CFG.
-f
Force compilation even if no new list/diff has been
detected.
-i
Ignore FastLst.Dat: run as if it were the first time.
All nodelists compiled, all exports executed.
-p
Prepare: Unarc new lists and diffs, Apply diffs and Arc
new nodelists, do not compile nodelists.
-r
When applying a diff, FastLst usually deletes the newly
generated source nodelist file if a CRC error is
detected. With this switch the new nodelist is _not_
deleted, so that it will be processed anyway.
When compiling a list, FastLst usually aborts the
compilation of the current output nodelist if a CRC
error is detected. With this switch the current output
nodelist will be entirely compiled anyway.
-h or -?
for help
ΓòÉΓòÉΓòÉ 9. Errorlevels ΓòÉΓòÉΓòÉ
ERRORLEVELS
0 - Normal termination, something compiled
1 - Help requested
2 - File Open error
3 - Abnormal termination
4 - Disk Full
5 - Can't find config file
6 - Configuration error
7 - Out of memory
8 - Read error while applying diff
9 - CRC error (applying diff)
10 - CRC error (compiling list)
11 - User Break
12 - Cannot rename temporary output nodelist files
13 - Cannot open source nodelist file
14 - Timeout waiting on V7+ semaphore
15 - Too many nodelists in inbound directories
16 - Nothing found after unarchiving a fixed-name nodelist
17 - Error Linking output files
100 - Normal termination, nothing compiled
250 - MsgApi: Init Error
251 - MsgApi: Area Open Error
252 - MsgApi: Area Lock Error
253 - MsgApi: Area Close Error
ΓòÉΓòÉΓòÉ 10. Configuration ΓòÉΓòÉΓòÉ
CONFIGURATION
Before analyzing the cfg keywords in detail, let's introduce the
overall mechanism that is at the basis of FastLst's
configuration.
If you are converting from a different nodelist compiler, please
forget the old configuration and start from scratch.
FastLst.Cfg is divided into several logical blocks and the
sequence of the various statements is essential: you cannot just
put keywords somewhere in the config file; they must be arranged
in the correct order.
At first, this characteristic of FastLst's configuration might
appear complex to understand, but, as soon as you will grasp its
logic, you will understand that it's really easy to write a
correct configuration file and you will appreciate its
extraordinary flexibility.
The first block of configuration is the "Global" one.
The verbs in this block refer to the compilation of all the
nodelists.
Then there are one or more "Output Blocks": each output block
refers to the compilation of a single nodelist (e.g.
NODEX.*).
Each "Output Block" has a "Output section" (with statements
regarding the compilation of the whole <NODEX>.* list) and one
or more "Input blocks" containing the verbs that describe how to
compile each of the source nodelists.
The first "Output Block" can optionally be of a special kind: a
"NoCompile" block, whose "Input Blocks" describe nodelists that
must be maintained (e.g. diffs applied) but not compiled to any
<NODEX>.* list.
Some statements can be used in blocks of a particular type only,
others can be used in many different places depending on what
nodelists you want to be affected. As a rule of thumb, you can
use each statement anywhere it seems to be logically acceptable.
If you feel frightened by such abstract considerations, please
take a look at the example Fast*.Cfg files, so that you can
quickly realize it's not that difficult.
To write your own configuration file you should start modifying
the example one that is more adequate to your needs.
Now, let's consider all the verbs that are allowed in FastLst's
configuration.
ΓòÉΓòÉΓòÉ 11. Cfg Reference ΓòÉΓòÉΓòÉ
CFG REFERENCE
- Items between square brackets (e.g. [<item>]) are optional.
- The names of the various Keywords are NOT case sensitive.
- When a directory path is required, the trailing backslash '\'
is optional.
- The ';' character starts comments: any character following the
';' is ignored, unless inside quoted strings.
- The maximum length of configuration lines is 254 characters,
so don't go further (you can always split address lists into
smaller ones).
- In the OS/2 version, any file specification can be a legal
OS/2 name, between double quotes if necessary.
Please, note that the order of the configuration statements
follows some logical rule. In order not to create confusion in
the .cfg file and not to break some _necessary_ order relation,
please follow the scheme proposed in the example Fast*.CFG files
and in this reference documentation.
Please, be aware that the generation of text files (FidoTxt,
FidoPrn, FidoUserLst verbs) and the use of lots of options and
overrides can slow down the compilation process: use only the
options/overrides that you really need if you mind compilation
time.
ΓòÉΓòÉΓòÉ 11.1. Include ΓòÉΓòÉΓòÉ
Include <filename>
You can split the configuration into multiple files, including
them via this statement, which can be used everywhere and
nested without limits.
ΓòÉΓòÉΓòÉ 11.2. Global ΓòÉΓòÉΓòÉ
G L O B A L
The following verbs can be used in the Global section of
FastLst.cfg. Some of them can be used in other places also, so
they are divided into separate sections.
ΓòÉΓòÉΓòÉ 11.2.1. Section A ΓòÉΓòÉΓòÉ
G L O B A L
Section A
The following configuration verbs can be used in the GLOBAL
section of FastLst.Cfg.
ΓòÉΓòÉΓòÉ 11.2.1.1. RegKey ΓòÉΓòÉΓòÉ
RegKey <RegKey>
Registered Users only: <RegKey> is the registration key
and it is NOT case sensitive.
Example:
RegKey dfhyuwru6274623
ΓòÉΓòÉΓòÉ 11.2.1.2. Priority ΓòÉΓòÉΓòÉ
Priority <type> [<level>]
Changes the execution priority of the FastLst process
(OS/2 only).
Ignored by NT and DOS versions.
<type> is one of: Idle Regular High
<level> is an integer in the range 0...31 and defaults
to 0.
If you do not use this statement, FastLst will run at
the default priority, which normally is "Regular 0".
Examples:
Priority High 31
Gives Fastlst the highest priority for "non
time-critical" processes. It will run fast even if it
is in the background and other processes are active.
Priority Idle
Gives FastLst the lowest priority, so that it loads
the system as minimally as possible. It will run
significantly slower, especially if in the background
or when other CPU intensive processes are in
execution.
ΓòÉΓòÉΓòÉ 11.2.1.3. StatusLog ΓòÉΓòÉΓòÉ
StatusLog <LogFile>
<LogFile> is the name of the file where all the
operations performed by FastLst will be logged,
following the "Binkley Style".
In multitasking environments, please be sure to use a
file that cannot be used by other processes at the same
time. For example: if (in your system) FastLst can be
executed while Binkley is running, please use different
log files.
Should you not want the log file, you can comment this
keyword out.
Example:
StatusLog d:\bbs\log\FastLst.log
ΓòÉΓòÉΓòÉ 11.2.1.4. CompressCfg ΓòÉΓòÉΓòÉ
CompressCfg <compress_cfg>
This is a "Squish style" compress definition file.
In the case you are using a case-sensitive
de/compression program (e.g. OS/2 ZIP/UNZIP), please
make sure to use the correct switches in <compress_cfg>
and/or the correct case (Lower/Upper) in <NodeList> and
<NodeDiff> specifications.
You can find the suggested <compress_cfg> in the example
Compress.Cfg file included in the FastLst pack.
If you are already using Squish and/or Maximus, you can
just specify the name of their compress.cfg (but do
check that they indicate the necessary switches to avoid
case sensitiveness during extraction).
Refer to the "Compress Definition File" section at the
end of this document for the syntax of <compress_cfg>.
ΓòÉΓòÉΓòÉ 11.2.1.5. InputPath ΓòÉΓòÉΓòÉ
InputPath <NodeDir>
Specifies the default path for input files (source
nodelists/nodediffs). You can override it by using a
full pathname in input-file specifications.
Created if not existing.
Example:
InputPath d:\bbs\nodelist\
ΓòÉΓòÉΓòÉ 11.2.1.6. ArcPath ΓòÉΓòÉΓòÉ
ArcPath <ArcNodeDir>
Specifies the default path for Archived nodelist files.
It usually points to the file area where your TIC
processor moves the inbound nodelist archives.
You can override it by using a full pathname in
Archived-file specifications.
Example:
ArcPath d:\bbs\file\nodelist\
ΓòÉΓòÉΓòÉ 11.2.1.7. ArcDate ΓòÉΓòÉΓòÉ
ArcDate Write|Creation
(OS/2)
Selects the date to be used for computing the age of
fixed-name archived nodelist files.
This setting is useful for HPFS (which has separate
Write and Creation dates) and ignored for FAT.
If not specified, "Creation" is assumed.
Attention: in order to avoid problems in the case the
date has been corrupted during the transfer of the file,
it is best to choose the same date that your mailer sets
as "receive/upload" date or that is touched by your TIC
processor.
Examples:
ArcDate Write ; Use the Write date
ArcDate Creation ; same as default
ΓòÉΓòÉΓòÉ 11.2.1.8. MultiLineDesc ΓòÉΓòÉΓòÉ
MultiLineDesc <nnn> [<c>]
By default, files.bbs description must be on a single
line; this statement enables Multi-Line support.
<nnn> is the number of spaces that must precede the
continuation lines.
<c> is the continuation character.
If <c> is NOT specified, it is assumed that the
continuation lines must be preceded by <nnn> spaces.
If <c> IS specified, it is assumed that the continuation
lines must be preceded by <nnn> spaces, the <c>
character and one more space.
For example, to have the 2nd and following description
lines in files.bbs start at the 32nd column, use:
MultiLineDesc 31
A description in files.bbs would be like:
Test.Zip This is the first description line
this is the 2nd line
this is the 3rd line
^ ^^
1 31 32
To have the continuation lines preceded by a '|'
character, use:
MultiLineDesc 29 |
A description in files.bbs would be like:
Test.Zip This is the first description line
| this is the 2nd line
| this is the 3rd line
^ ^ ^
1 29 32
ΓòÉΓòÉΓòÉ 11.2.1.9. KillAfter ΓòÉΓòÉΓòÉ
KillAfter
Old output files are killed after the new ones have been
successfully written.
The new output files are written to temporary names,
then the old ones are killed and the new ones renamed
(and FastLst retries for 30s in case of error, to be
multitasking smart).
Thus you will always have a valid compiled nodelist,
even in the case of a compilation error and consequent
compile abortion. Besides, your multitasking system can
continue operations while FastLst is working. On the
other hand you might need some more spare disk space to
hold the old and new files during compilation.
ΓòÉΓòÉΓòÉ 11.2.1.10. KillSource ΓòÉΓòÉΓòÉ
KillSource
Tells FastLst to kill all uncompressed nodelists (that
are also available in archived format) before
terminating.
Please note that FastLst deletes a source nodelist only
if the ArcList statement is defined.
Besides, when the NodeDiff statement is used, an
ArcMethod must be defined to allow the deletion of the
nodelist.
When no NodeDiff is defined, FastLst assumes that the
uncompressed NodeList has been extracted from a
corresponding archive.
ΓòÉΓòÉΓòÉ 11.2.1.11. BeforeKillSource ΓòÉΓòÉΓòÉ
BeforeKillSource <command>
This statement is used to invoke a command of your
choice before the source nodelists are killed, upon
FastLst completion.
<command> is executed even if "KillSource" is not used.
It is a means of invoking a command before FastLst ends.
The "NeededBeforeKill" verb must be used to specify the
NodeLists needed by this command: if one of these
nodelists is found new, then this command is invoked
after decompressing all the nodelists that have the
"NeededBeforeKill" attribute (and have not been
decompressed yet).
IMPORTANT: <command> is executed ONLY if some nodelist
affected by a "NeededBeforeKill" verb has been detected
as new.
<command> can be any command that is valid for the
command interpreter specified in your COMSPEC
environment variable.
If <command> invokes an executable file, it is loaded
and executed directly; otherwise your command
interpreter is invoked, so that you can execute a batch
file or any other valid command.
No variable parameters are supported.
ΓòÉΓòÉΓòÉ 11.2.1.12. Dash2Comma ΓòÉΓòÉΓòÉ
Dash2Comma
Change dashes to commas in the phone numbers.
Useful for people that are still connected to ancient
"rotary pulse" electromechanic telephone exchanges.
ΓòÉΓòÉΓòÉ 11.2.1.13. NoReport ΓòÉΓòÉΓòÉ
NoReport
Do not output nodelist statistics
ΓòÉΓòÉΓòÉ 11.2.1.14. NoRedir ΓòÉΓòÉΓòÉ
NoRedir
Nodes that do not have a valid phone number (Hold,
Unpublished) are usually redirected to their
coordinators.
When this verb is used, redirection does not take place
and the node is given an empty phone number, so that you
never call a system different from that you think you
are calling.
Please note that (even with no NoRedir verb):
- points are never redirected;
- if you have a password with a system or its
coordinator, this node will never be redirected.
ΓòÉΓòÉΓòÉ 11.2.1.15. V7BugFix ΓòÉΓòÉΓòÉ
V7BugFix
Circumvents a bug with V7 nodelist in Binkley 2.50 (and
perhaps in many other programs whose V7 search function
was inspired by Binkley's sources) that can sometimes
hide segments of V7 nodelist.
Binkley 2.60 is OK, but some other programs may not: if
you are unsure, keep this keyword active.
ΓòÉΓòÉΓòÉ 11.2.1.16. MsgLogArea ΓòÉΓòÉΓòÉ
MsgLogArea <path> [-$]
Some information about the compilation can be reported
to a fido or squish message area.
<path> indicates a message area for reporting
compilation logs.
-$ specifies that the area is in Squish format;
otherwise it is assumed to be *.MSG.
The "MsgLog" and "LogStats" statements can be used
to add some information that is not reported by default.
Examples:
MsgLogArea \bbs\mail\net -$
MsgLogArea \bbs\mail\net\
ΓòÉΓòÉΓòÉ 11.2.1.17. MsgRemArea ΓòÉΓòÉΓòÉ
MsgRemArea <path> [-$]
The comments found in the compiled nodelists can be
selectively reported to a fido or squish message area.
<path> indicates a message area for reporting
compilation logs.
-$ specifies that the area is in Squish format;
otherwise it is assumed to be *.MSG.
The "MsgRem" statement (see Global Section C) MUST be
used to specify which types of comments you want to be
reported.
Please note that no comments are reported if no "MsgRem"
statement is used.
Examples:
MsgRemArea \bbs\mail\net -$
MsgRemArea \bbs\mail\net\
ΓòÉΓòÉΓòÉ 11.2.1.18. MsgFromNode/MsgToNode ΓòÉΓòÉΓòÉ
MsgFromNode <address>
MsgToNode <address>
Specify the addresses for the created messages.
<address> is a 4D address.
Example:
MsgFromNode 2:332/504
MsgToNode 2:332/504.1
ΓòÉΓòÉΓòÉ 11.2.1.19. MsgTo ΓòÉΓòÉΓòÉ
MsgTo <name>
Specifies the name of the addressee of the created
messages.
Example:
MsgTo Alberto Pasquale
ΓòÉΓòÉΓòÉ 11.2.1.20. MsgAttr ΓòÉΓòÉΓòÉ
MsgAttr <attributes>
Specifies the attributes for the created messages.
<attributes> can be a (not case sensitive) combination
of:
P : Private
K : Kill/Sent
C : Crash
H : Hold
D : Direct (crash + hold in squish messages)
Examples:
MsgAttr P
MsgAttr pk
ΓòÉΓòÉΓòÉ 11.2.1.21. MsgSize ΓòÉΓòÉΓòÉ
MsgSize <bytes>
Specifies the maximum size of a single message: after
this length, the message is split.
Defaults to 7K, greater values are recommended, so that
the message is not divided into too many parts.
Example:
MsgSize 60000
ΓòÉΓòÉΓòÉ 11.2.1.22. CostNullPhone ΓòÉΓòÉΓòÉ
CostNullPhone <Cost> [<UCost>]
Specifies the costs to be assigned to nodes with empty
(unpublished, etc.) phone number.
<Cost> is the "call cost" .
<UCost> is the "user cost" (fee for netmail messages).
<UCost> defaults to <Cost>.
If CostNullPhone is not used, <Cost> defaults to 65535
and <UCost> to 0.
Example:
CostNullPhone 1000 0
Note:
Some programs might have bugs that cause problems
dealing with high costs (such as the default 65535).
Should you experience problems with entries that have a
"NullPhone", try setting a lower cost e.g.
"CostNullPhone 900 0".
ΓòÉΓòÉΓòÉ 11.2.1.23. CostVerbatimPhone ΓòÉΓòÉΓòÉ
CostVerbatimPhone <Cost> [<UCost>]
Specifies the costs to be assigned to nodes that have
a verbatim phone specification.
<Cost> is the "call cost" .
<UCost> is the "user cost" (fee for netmail messages).
<UCost> defaults to <Cost>.
If the statement is not used, both costs default to 0.
Example:
CostVerbatimPhone 10 0
ΓòÉΓòÉΓòÉ 11.2.1.24. Dial/Cost Table ΓòÉΓòÉΓòÉ
Dial/Cost translation Table
With this table you specify the dial translations and the costs
to be applied depending on the phone number.
Note: This table is not used against "Verbatim Phones".
The table begins with "Dial" and ends with the "End" keyword.
Each entry has the following format:
<PartPhone> <PreSuf> [<Costs>]
The following two keywords allow to specify groups of exchanges
that must be handled by a certain dial table entry:
LocalValues <PartPhone> <PreSuf> [<Costs>]
This keyword is provided for clarity only: it is
taken just as a normal specification with no
heading "LocalValues".
LocalExchanges <num> ...
Lists all the exchanges that must be handled as per the
preceding dial translation entry (which may be preceded
by the "LocalValues" keyword for clarity).
Please remember that the line length is limited to 254
characters.
You can use multiple "LocalExchanges <num> ..."
statements if you like short lines or need more than
254 characters.
Please note that all numbers that (after <PartPhone>
stripping) begin with <num> are considered local.
For example, if 220, 221, 222, 223, 224, 225, 226, 227,
228, 229 are all local exchanges, you can indicate 22 to
include them all.
The use of these two statements in the place of a long list of
normal table lines (one for each local exchange) should also
speed up the processing of all the nodelist entries that are not
in your area code.
<PartPhone>
is a partial phone number to be matched with the initial
part of nodelist entries. The dashes are ignored. The
<PartPhone> of the last entry must be a single dash "-",
to mean that all the remaining numbers will take the
parameters specified there.
<PreSuf>
can be one of:
a: <Prefix>
b: /<Suffix>
c: <Prefix>/<Suffix>
d: /
<PartPhone> is stripped from numbers beginning with it,
then <PreSuf> is used to prepend/append the specified
strings to the remainder.
Case a: <Prefix> is prepended.
e.g.: "39- 0"
strips "39-" and adds "0" at the beginning of
the number.
Case b: <Suffix> is appended.
e.g.: "39-59- /!"
strips "39-59-" and adds "!" at the end of the
number.
Case c: <Prefix> is prepended and <Suffix> appended.
e.g.: "39- 0/!"
strips "39-", adds "0" at the beginning and "!"
at the end.
Case d: Nothing is prepended nor appended.
e.g.: "/"
The slash is needed to allow the correct
interpretation of the subsequent fields.
No spaces are allowed between prefix, suffix and the
separating slash.
<Costs>
You can specify up to 4 cost fields:
<Cost> [<UCost> [<DigCost> [<DigUCost>]]]
Each one has a range 0-65535.
<Cost> is the Call cost, default: 65535.
<UCost> is the User cost, default: <Cost>.
<DigCost> is the Digital Call cost, default: <Cost>.
<DigUCost> is the Digital User cost.
<DigUCost> defaults to <DigCost> if it is specified, otherwise
it defaults to <UCost>.
If you like your users to send netmail messages from the BBS
with no need for "credits", you should set <UCost> and
<DigUCost> to 0.
When searching for "PartPhone", the first matching entry is
applied: in the case of entries with an initial part in common,
you have to specify them in sequence from the longest to the
shortest. If no match is possible, the last line specifies the
default (thereby international) parameters.
WARNING: This table CANNOT be left totally empty: it must
contain at least the default entry "- [<PreSuf>]".
Example 1a/b/c (North American viewpoint):
There are some groups of phone numbers:
1 - Local numbers.
These are usually "toll free" numbers.
As a rule of thumb, you must only dial the local
number, stripping the Country Code "1" and the
Area Code.
In the case you live at the crossroads of two or
more area codes, it is possible that you have local
numbers in area codes that you must _not_ strip.
2 - Area Code numbers.
They have your same Area Code but they are long
distance.
As far as I know, there are many different
situations regarding the need to dial the long
distance access code "1" and the Area Code.
In any case you usually want to differentiate costs.
The Country "1" and Area Codes must be stripped and
replaced by:
(a) the long distance access code "1"
(b) the long distance access code "1" +
the Area Code
(c) nothing
In case (b) the number really remains untouched.
Even if the Country Code for USA/Canada "1" is
numerically equal to your long distance acces code,
they are conceptually quite different, and so they
will be treated.
3 - Domestic numbers.
USA/Canada numbers, with a leading "1", that is the
international Country Code for USA and Canada.
They must be left untouched, since the american long
distance access code is equal to the international
Country Code for North America.
4 - International numbers.
These are numbers out of USA and Canada.
They must be prefixed by "011", that is the
international access code.
And now let's see how to achieve our goal using
FastLst's Dial Table.
Example 1a:
Let's suppose:
- we are in Area Code 414
- the 414 must be stripped for LD calls
- the local exchanges are 231, 232, 233, 235, 236, 424
Dial
; strip 1-414- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-414- / 0
LocalExchanges 231 232 233 235 236 424
; Remaining "1-414-" numbers are long distance:
; strip the 414 Area Code and assign costs = 25.
1-414- 1- 25
; Remaining "1-" numbers are Domestic Long
; Distance.
; Set costs to 50
1- 1- 50
; Remaining numbers are international.
; Prepend 011 and set call cost to 250 and
; user cost to 500
- 011 250 500
End
Example 1b:
Let's suppose:
- we are in Area Code 604
- the 604 must NOT be stripped for LD calls
- the local exchanges are 220 221 222 224 228 230 231
240 241 244 250 251 252 253 254 255 257 258 261 263
264 266
Dial
; strip 1-604- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-604- / 0
LocalExchanges 220 221 222 224 228 230 231 240
LocalExchanges 241 244 250 251 252 253 254 255
LocalExchanges 257 258 261 263 264 266
; Remaining "1-604-" numbers are long distance:
; assign costs = 25.
1-604- 1-604- 25
; Remaining "1-" numbers are Domestic Long
; Distance.
; Set costs to 50
1- 1- 50
; Remaining numbers are international.
; Prepend 011 and set call cost to 250 and
; user cost to 500
- 011 250 500
End
Example 1c:
Let's suppose:
- we are at the crossroads of Area Codes 510, 408, 415
- "1-510" must always be stripped
- "1-408" and "1-415" must never be stripped
- some exchanges are toll-free, others are not
Dial
; strip 1-510- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-510- / 0
LocalExchanges 224 225 226 227 247 249 252 264 276
LocalExchanges 278 293 317 353 354 416 417
; Specify local exchanges for area code 408,
; keep "1-408".
LocalValues 1-408- 1-408- 0
LocalExchanges 232 251 254 258 259 262 263 272 276
LocalExchanges 321 324 325 383 428 432 433 434
; Specify local exchanges for area code 415,
; keep "1-415".
LocalValues 1-415- 1-415- 0
LocalExchanges 233 234 321 322 323 324 325 326 327
LocalExchanges 328 329 354 424 462 473 493
; Remaining "1-510-" numbers are not free,
; the country and area codes are stripped.
1-510- / 25
; Remaining numbers in area codes 408 and
; 415 are not free, nothing is stripped.
1-408- 1-408- 25
1-415- 1-415- 25
; Remaining numbers in country code "1"
; are domestic: nothing changed, cost 100.
1- 1- 100
; Remaining numbers are international.
; Prepend 011 and set cost to 2000.
- 011 2000
End
Example 2 (European viewpoint):
We differentiate between city, district, domestic and
international.
Dial
LocalValues 39-59- / 5
LocalExchanges 2 3 4 56 81 82 ; city
39-59- / 30 ; district
39- 0 60 ; domestic long distance
43 0043- 100 ; Austria
32 0032- 100 ; Belgium
45 0045- 100 ; Denmark
33 0033- 100 ; France
49 0049- 100 ; Germany
44 0044- 100 ; UK
31 0031- 100 ; Netherlands
34 0034- 100 ; Spain
46 0046- 100 ; Sweden
41 0041- 100 ; Switzerland
1 001- 200 ; USA/Canada
- 00 300 ; others
End
Example 3 (Separate Analog/Digital costs):
For people who pay different charges for analog and
digital calls, FastLst allows to specify separate
digital costs (that will be used for nodes that are
given a Digital ModemType).
Let's suppose we want null User Costs and Digital Costs
twice as high as the Analog ones.
Dial
LocalValues 39-59- / 5 0 10 0
LocalExchanges 2 3 4 56 81 82 ; city
39-59- / 30 0 60 0 ; district
39- 0 60 0 120 0 ; domestic long distance
- 00 300 0 600 0 ; international
End
Example 4:
Minimal table for sysops that make dial translations and
cost assignments somewhere else.
Dial
-
End
ΓòÉΓòÉΓòÉ 11.2.1.25. Modem Type Table ΓòÉΓòÉΓòÉ
Modem Type Table
This table allows to set the Modem Type, costs and dial
translations depending on the nodelist flags.
Syntax:
TypeDef
<Flag> <ModemType> [<Cost> <UCost> [<DialTrans>]]
<Flag> <ModemType> [Digital|Analog]
...
End
<Flag> is a Nodelist flag (max 49 chars),
<ModemType> is a number 0->255.
The nodelist flags of each node are searched for <Flag>s, in the
same order as they are listed in the TypeDef table.
The <Flag> must match completely a nodelist flag: if <Flag> is
V32 and the nodelist flag is V32B, it's not a match.
The search is not case sensitive.
The ModemType field of the compiled nodelist will be determined
by the first match only: If you define X75 before V34, a node
with both V34 and X75 will have a X75 modem type.
When <Flag> is for a PSTN system, you can optionally indicate
whether it is DIGITAL or ANALOG (which is the default); this is
useful for assigning special Digital costs if you have
configured them in the Dial/Cost table.
When <Flag> is for a non-PSTN system (e.g. internet) you can
specify the costs (which override the CostVerbatimPhone) and
dial translations.
<Cost> The Call Cost, range: 0-65535
<UCost> The User Cost, range: 0-65535
<DialTrans> The Dial Translations, for "verbatim" phones.
These dial translations DO NOT affect the indexed entry (in
<NODEX>.PDX) and are intended as a work around for the dial
translations operated by the mailer or the modem-emulator.
The syntax requires a set of strings.
The first character of each string will be substituted
with the remaining characters.
A string containing space ' ' or semi-colon ';' MUST be
included in quotation marks. If the quotation mark is needed
inside the quoted string, it must be double.
15 strings of 5 characters are allowed.
Example:
You need to translate '.' to '*', ':' to ' ', 'v' to
'V'; call_cost=100, user_cost=0:
Typedef
[...]
VM 200 100 0 .* ": " vV
[...]
End
You want to translate '.' to '\.', ':' to ' ', 'v' to
'V'; call_cost=150, user_cost=100:
Typedef
[...]
VM 200 150 100 .\. ": " vV
[...]
End
Recommended dial translations for Binkley and VMODEM:
-\- .* vV ~\~ ": "
Full example of TypeDef table:
for USR Courier I-modem + VMODEM:
TypeDef
X75 1 Digital
ISDNC 1 Digital
V120 2 Digital
V120H 2 Digital
V120L 3 Digital
V34 4 Analog
VFC 5 Analog
V32T 6 Analog
H16 7 Analog
V32B 8 Analog
ZYX 8 Analog ; ZYX implies V32B
Z19 8 Analog
Z16 8 Analog
H14 9 Analog
V32 10 Analog
HST 11 Analog
VM 200 100 0 -\- .* vV ~\~ ": " ; VMODEM
End
In Binkley.Cfg for the I-modem you can use:
ModemTrans 0
ModemTrans 1 AT*V2=6D/ ; X75
ModemTrans 2 AT*V2=1D/ ; V120
ModemTrans 3 AT*V2=1D/ ; V120L
ModemTrans 4 AT*V2=3B0D/ ; V34
ModemTrans 5 AT*V2=3B0D/ ; VFC
ModemTrans 6 AT*V2=3B0D/ ; V32T
ModemTrans 7 AT*V2=3B1D/ ; H16
ModemTrans 8 AT*V2=3B0D/ ; V32B
ModemTrans 9 AT*V2=3B1D/ ; H14
ModemTrans 10 AT*V2=3B0D/ ; V32
ModemTrans 11 AT*V2=3B1D/ ; HST
ModemTrans 200
In Binkley.Cfg for VMODEM you can use:
ModemTrans 0
ModemTrans 1
ModemTrans 2
ModemTrans 3
ModemTrans 4
ModemTrans 5
ModemTrans 6
ModemTrans 7
ModemTrans 8
ModemTrans 9
ModemTrans 10
ModemTrans 11
ModemTrans 200 ATDT#/ ; VMODEM
ΓòÉΓòÉΓòÉ 11.2.1.26. User Flags Table ΓòÉΓòÉΓòÉ
User Flags Table
This is an optional table used to handle the "user defined" bits
in the Flags word of the compiled nodelist entry.
These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is the 6th
bit and F is the 16th bit of the word.
Using this table, you can associate (source) nodelist flags to
user defined bits in the output binary nodelist.
The table is delimited by the "FlagDef" and "End" keywords; each
line is in the form "<sFlag> <bFlags>" where <sFlag> is a flag
(max 9 chars) to be looked for in the source nodelists while
<bFlags> represents one or more user-defined bits in the output
Flags word.
Example:
FlagDef
V42B AB ; V42B -> user bits A and B
V32B DE ; V32B -> user bits D and E
End
To add further flags on a node by node basis, please use the
"Flags <Addr> <Flags>" statement.
To remove flags, please specify the source flags via the
"NodeFlags <Addr> <NodeFlags>" statement.
ΓòÉΓòÉΓòÉ 11.2.2. Section B ΓòÉΓòÉΓòÉ
G L O B A L
Section B
The statements in this section affect the processing of all
the output blocks and thereby of all the input nodelists.
These statements can also be used in the "OUTPUT" section of an
OUTPUT block or inside an INPUT block, in which case they affect
the compilation of the relevant block only.
In the case you use a verb that has already been used in a
"higher level" block, it will behave as a local override.
ΓòÉΓòÉΓòÉ 11.2.2.1. NeededBeforeKill ΓòÉΓòÉΓòÉ
NeededBeforeKill
Tells FastLst that the affected NodeList(s) are needed
by the command run via the "BeforeKillSource" statement.
The "BeforeKillSource" verb allows you to run a command
(executable or batch file) after the compilation has
completed, just before FastLst ends and (if "KillSource"
is used) deletes the source files that are also present
in archived form.
The lists affected by "NeededBeforeKill" are extracted,
if not already present, before the "BeforeKillSource"
command is executed.
ΓòÉΓòÉΓòÉ 11.2.2.2. ArcMethod ΓòÉΓòÉΓòÉ
ArcMethod <meth>[,<f>] ...
Tells FastLst that it must make sure that all new
nodelists are archived using the specified methods.
The original archive is NOT killed.
Obviously, a new nodelist is not rearchived to its
original method.
<meth> is the name of an archiver defined in
compress.cfg.
<f> is the optional specification of the letter to be
used for the variable archive extension. If not
specified, it is assumed equal to the first letter of
the defaults extension for this archiver.
Multiple ArcMethod statements are allowed.
Example 1:
ArcMethod ZIP LH,H
NodeList.Z48 arrives: it is archived to NodeList.H48
also, using the LH archiver.
Example 2:
ArcMethod ZIP LH
NodeDiff.Z48 arrives: the resulting nodelist is archived
to NodeList.Z48 using the ZIP archiver and to
NodeList.L48 using LH.
ΓòÉΓòÉΓòÉ 11.2.2.3. ArcDiffMethod ΓòÉΓòÉΓòÉ
ArcDiffMethod <meth>[,<f>] ...
Tells FastLst that it must make sure that all new
nodediffs are archived using the specified methods.
The original archive is NOT killed.
Obviously, a new nodediff is not rearchived to its
original method.
<meth> is the name of an archiver defined in
compress.cfg.
<f> is the optional specification of the letter to be
used for the variable archive extension. If not
specified, it is assumed equal to the first letter of
the defaults extension for this archiver.
Multiple ArcDiffMethod statements are allowed.
Example:
ArcDiffMethod ZIP LH,H
NodeDiff.Z48 arrives: it is archived to NodeDiff.H48
also, using the LH archiver.
ΓòÉΓòÉΓòÉ 11.2.2.4. External Commands ΓòÉΓòÉΓòÉ
EXTERNAL COMMANDS
The following verbs allow to invoke external commands.
<command> can be any legal command-line command: it can be the
name of an executable file, a batch file or any command that can
be understood by your command-line interpreter (OS/2's CMD,
4OS2, etc.).
If <command> does not directly invoke an executable file,
FastLst automatically invokes your default command line
interpreter (as specified by the COMSPEC environment variable).
ΓòÉΓòÉΓòÉ 11.2.2.4.1. Archive Related Commands ΓòÉΓòÉΓòÉ
Archive Related Commands
The following verbs share the same syntax:
Two parameters are allowed in <command>:
%a is translated to the full pathname of the archive file.
%f is translated to the name of the file to be added or
extracted (no path).
<command> is run from the path where %f belongs.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.1. BeforeArcList ΓòÉΓòÉΓòÉ
BeforeArcList <command>
Command to be run before archiving a nodelist.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.2. AfterArcList ΓòÉΓòÉΓòÉ
AfterArcList <command>
Command to be run after archiving a nodelist.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.3. BeforeUnArcList ΓòÉΓòÉΓòÉ
BeforeUnArcList <command>
Command to be run before extracting a nodelist.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.4. AfterUnArcList ΓòÉΓòÉΓòÉ
AfterUnArcList <command>
Command to be run after extracting a nodelist.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.5. BeforeArcDiff ΓòÉΓòÉΓòÉ
BeforeArcDiff <command>
Command to be run before archiving a nodediff.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.6. AfterArcDiff ΓòÉΓòÉΓòÉ
AfterArcDiff <command>
Command to be run after archiving a nodediff.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.7. BeforeUnArcDiff ΓòÉΓòÉΓòÉ
BeforeUnArcDiff <command>
Command to be run before extracting a nodediff.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.8. AfterUnArcDiff ΓòÉΓòÉΓòÉ
AfterUnArcDiff <command>
Command to be run after extracting a nodediff.
ΓòÉΓòÉΓòÉ 11.2.2.4.1.9. Example ΓòÉΓòÉΓòÉ
Example
To hatch the new nodelist (note that you probably need to
specify the location of the config file since the command is
executed from the directory where %f resides):
AfterArcList Hatch %a NODELIST "New NodeList"
ΓòÉΓòÉΓòÉ 11.2.2.4.2. NodeDiff Related Commands ΓòÉΓòÉΓòÉ
NodeDiff Related Commands
The following verbs accept different parameters:
%l is translated to the full pathname of the nodelist.
%d is translated to the full pathname of the nodediff.
<command> is run from the current directory.
ΓòÉΓòÉΓòÉ 11.2.2.4.2.1. BeforeEdit ΓòÉΓòÉΓòÉ
BeforeEdit <command>
Command to be run before applying a nodediff.
ΓòÉΓòÉΓòÉ 11.2.2.4.2.2. AfterEdit ΓòÉΓòÉΓòÉ
AfterEdit <command>
Command to be run after applying a nodediff.
Only %l can be used.
ΓòÉΓòÉΓòÉ 11.2.3. Section C ΓòÉΓòÉΓòÉ
G L O B A L
Section C
The statements in this section affect the processing of all
the output blocks and thereby of all the input nodelists.
These statements can also be used in the "OUTPUT" section of an
OUTPUT block (except for the "NoCompile" one) or inside an INPUT
block, in which case they affect the compilation of the relevant
block only.
In the case you use a verb that has already been used in a
"higher level" block, it will behave as a local override.
ΓòÉΓòÉΓòÉ 11.2.3.1. MsgRem ΓòÉΓòÉΓòÉ
MsgRem [<string>]
If MsgRemArea is used, FastLst reports the following
comments:
No MsgRem statement: none;
MsgRem with no <string>: all;
MsgRem with <string>: only the comments that begin with
";<l> " where <l> is one of the characters in <string>.
The ";" character in <string> means that the comments
beginning with "; " or ";<word>" can be reported.
Common types of comment lines:
;S This is a comment for SysOps
;U This is a comment for users
;F This comment should appear in formatted Fido lists
;A This is a comment of general interest
;E This comment is an error message
Example:
"MsgRem SE"
Only comments destined to SysOps and Error messages are
reported (lines beginning with ";S " and ";E ").
ΓòÉΓòÉΓòÉ 11.2.3.2. MsgLog ΓòÉΓòÉΓòÉ
MsgLog [NullPhone] [Redirected] [Points]
Some common situations (not really errors) are not
reported to MsgLogArea by default: if you want FastLst
to report them anyway, you can use this statement, but
be aware that very long reports could come out.
"NullPhone": systems with empty phone string are logged.
"Redirected": systems redirected to their coordinators
are logged (Hold, unpublished).
"Points": points with empty phone string are logged; be
aware that most pointlists contain unpublished (thereby
with empty phone) points.
Examples:
MsgLog Redirected
MsgLog Redirected NullPhone
ΓòÉΓòÉΓòÉ 11.2.3.3. GermanPointList ΓòÉΓòÉΓòÉ
GermanPointList
Instructs FastLst to consider the affected nodelist as a
3D German style pointlist. Zone 2 is assumed, if not
explicitly specified in the "NodeList" statement.
This verb is usually used inside an Input Block, so that
it affects that nodelist only.
WARNING: Be aware that using this statement in the
global section or in an Output block affects all the
involved nodelists !
Example Input Block:
NodeList Points24.???
GermanPointList
Nodediff Pr24Diff.???
ArcList Points24.??? 1
ArcDiff Pr24Diff.??? 5
ArcListDesc R24 PointList for day %d (%D), %a format
ArcDiffDesc R24 PointDiff for day %d (%D), %a format
ΓòÉΓòÉΓòÉ 11.2.3.4. NoPointLstPhone ΓòÉΓòÉΓòÉ
NoPointLstPhone
Changes to "-Unpublished-" the phone numbers specified
in the PointLists (German or "Boss" styles).
If you use Squish and Binkley, you usually will like
pointlists with the Boss' phone in the point entries
(otherwise a crash message to a point will have to be
manually readdressed to its Boss).
But if you use a netmail manager (as NmFwd) that already
routes the crash messages for points that do not have a
phone to their Boss, then you will probably like this
statement.
You will usually find convenient to use this statement
in the global section, so that it is valid for all the
nodelists.
ΓòÉΓòÉΓòÉ 11.2.3.5. BeforeCompile ΓòÉΓòÉΓòÉ
BeforeCompile <command>
Command to be run before compiling the affected
nodelist.
This statement follows the same rules explained in
"External Commands" in section B.
The %l parameter is translated to the full pathname of
the nodelist.
<command> is run from the current directory.
ΓòÉΓòÉΓòÉ 11.2.3.6. AfterCompile ΓòÉΓòÉΓòÉ
AfterCompile <command>
Command to be run after compiling the affected nodelist.
This statement follows the same rules explained in
"External Commands" in section B.
The %l parameter is translated to the full pathname of
the nodelist.
<command> is run from the current directory.
ΓòÉΓòÉΓòÉ 11.2.3.7. FidoTxt ΓòÉΓòÉΓòÉ
FidoTxt [<FidoTxt>]
Generate an 80 Column Text List of nodes.
Nodes included via the "Node,..." method and points are
excluded.
<FidoTxt> optionally specifies an output file name,
which defaults to "NodeList.Txt". If the same file name
has already been used for other nodelists, the output is
appended.
Example:
FidoTxt
ΓòÉΓòÉΓòÉ 11.2.3.8. FidoPrn ΓòÉΓòÉΓòÉ
FidoPrn [<FidoPrn>]
Generate a 132 Column Text List of nodes.
Nodes included via the "Node,..." method and points are
excluded.
<FidoPrn> optionally specifies an output file name,
which defaults to "NodeList.Prn". If the same file name
has already been used for other nodelists, the output is
appended.
Example:
FidoPrn
ΓòÉΓòÉΓòÉ 11.2.3.9. IncCoord ΓòÉΓòÉΓòÉ
IncCoord <CoordLev>
The coordinators of the specified and upper levels will
be always included, even if excluded by "IncAddr" and
"ExcAddr". <CoordLev> can be ZC, RC, NC, HC.
Example:
IncCoord NC
ΓòÉΓòÉΓòÉ 11.2.4. Export Section ΓòÉΓòÉΓòÉ
Global Export Section
You can use here the statements described in the "Export Global
Section" of the "Export Block" (see "Input Block" inside "Output
Block").
ΓòÉΓòÉΓòÉ 11.3. Output Block ΓòÉΓòÉΓòÉ
O U T P U T B L O C K
The following verbs define the compilation of a single output
binary nodelist.
The block begins with a "Output Section", that affects the
compilation of all the source (input) nodelists, followed by a
sequence of "Input Blocks" that define how to handle each of the
source nodelists.
The first "output block" can be of a special kind: if the
"NoCompile" statement is used instead of "Version7+", this block
indicates the actions necessary to maintain the specified
nodelists, but they are not compiled.
ΓòÉΓòÉΓòÉ 11.3.1. Version7+ ΓòÉΓòÉΓòÉ
Version7[+] <Path> <Nodex> [<Sysop>[.<Ext>]]
Start of a block of config verbs defining the generation
of an output nodelist. You can generate one or more
compiled nodelists with different names and path for the
output files. Each "Version7" statement marks the
beginning of a new output-nodelist definition.
Version7+ is for V7+ while Version7 allows to save space
and generate the V7 files only.
<Path> is the path where the output binary data and
index files are placed.
<Nodex> is the file name (no extension) for the output
files.
<Sysop>.<Ext> is the file name for the sysop-index.
When no extension is given, .NDX is assumed if
<Sysop> is different from <Nodex>, otherwise the .SDX
extension is used.
If you omit <Sysop> with Version7+, <Nodex>.SDX is used
for the SysOp index.
If you omit <Sysop> with Version7, no SysOp index is
generated.
Usually <Nodex> should be "NODEX" and <Sysop> "SYSOP".
If you use V7+ and all of your applications accept
<NODEX>.SDX as the SysOp index, you may omit <Sysop>.
For compatibility with V7 applications that require
"SYSOP.NDX" as SysOp index, "SYSOP" is recommended for
<SysOp>.
All the following verbs, up to the next "Version7" (if
any), are related to the preceding "Version7" output
files.
Examples:
; SysOp Index name
Version7+ d:\bbs\v7\ NODEX SYSOP ; SYSOP.NDX
Version7+ d:\bbs\v7\ NODEX NODEX ; NODEX.SDX
Version7+ d:\bbs\v7\ NODEX ; NODEX.SDX
Version7 d:\bbs\v7\ NODEX SYSOP ; SYSOP.NDX
Version7 d:\bbs\v7\ NODEX NODEX ; NODEX.SDX
Version7 d:\bbs\v7\ NODEX ; no index
Version7 Output files:
<Nodex>.DAT Nodelist Data
<Nodex>.NDX Address Index
<Sysop>.NDX SysOp Index (optional)
Some Version7 programs also accept <Nodex>.SDX for the
SysOp Index.
Version7+ Output files:
<Nodex>.DAT Nodelist Data
<Nodex>.DTP Additional Data
<Nodex>.NDX Address Index
<Nodex>.SDX SysOp Index
<Nodex>.PDX Phone Index
Version7+ programs must also be configurable to accept
<Sysop>.NDX as the SysOp Index for compatibility with V7
programs.
ΓòÉΓòÉΓòÉ 11.3.2. NoCompile ΓòÉΓòÉΓòÉ
NoCompile
This verb can be used to start the first "Output Block",
instead of "Version7".
This way the first output block becomes a "NoCompile"
block and the indicated nodelists are maintained but not
compiled.
This is a means for maintaining a NodeList (applying
nodediffs, archiving with different archivers etc.)
without compiling it.
The statements related to nodelist compilation (see
Global section C) are obviously illegal in a "NoCompile"
block.
ΓòÉΓòÉΓòÉ 11.3.3. Output section ΓòÉΓòÉΓòÉ
O U T P U T Section
The following verbs affect the compilation of the current output
block and must precede the definitions of the input blocks
(which start with the Nodelist statement).
ΓòÉΓòÉΓòÉ 11.3.3.1. FidoUserLst ΓòÉΓòÉΓòÉ
FidoUserLst [<FidoUserLst>]
Generate "fidouser.lst style" text SysOp list.
<FidoUserLst> optionally specifies an output file name,
which defaults to "FidoUser.Lst". Different output
blocks require different names.
Example:
Version7+ d:\bbs\v7 NODEX SYSOP
FidoUserLst
ΓòÉΓòÉΓòÉ 11.3.3.2. LinkOnDisk ΓòÉΓòÉΓòÉ
LinkOnDisk
Forces "on disk" DTP linking.
This can be useful to avoid FastLst using virtual memory
for linking the <NODEX>.DTP file.
If you do not have enough free physical memory (12MB for
60,000 nodes), the "on disk" mode is faster.
Example:
Version7+ d:\bbs\v7 NODEX
LinkOnDisk
ΓòÉΓòÉΓòÉ 11.3.3.3. LogStats ΓòÉΓòÉΓòÉ
LogStats
Output Statistics to MsgLogArea.
This statements makes FastLst write the statistics for
the current output-nodelist to the area specified with
MsgLogArea.
Example:
Version7+ ...
LogStats
ΓòÉΓòÉΓòÉ 11.3.3.4. Block Specifications ΓòÉΓòÉΓòÉ
Block Specifications
You can use here the same statements described in the "Global
Section B" and (if this is not a "NoCompile" block) "Global
Section C" and "Export Global Section" (see the Export Block
below).
ΓòÉΓòÉΓòÉ 11.3.3.5. Address Specific Stuff ΓòÉΓòÉΓòÉ
ADDRESS SPECIFIC STUFF
The following verbs define address specific stuff that will
affect the compilation of all the source nodelists compiled in
the current output block. These statements are illegal in a
"NoCompile" block.
If you prefer, you can specify this type of information in the
"Address Specific Stuff" section of the pertinent input block.
WARNING: make sure all addresses have full info (incl. zone).
ΓòÉΓòÉΓòÉ 11.3.3.5.1. Password ΓòÉΓòÉΓòÉ
Password <Addr> <Password>
Allows to specify <Password> one <Addr> at a time.
Version 7 has no limit on password length, however the
programs that use it are usually limited to 8 chars.
Some (rare) programs have problems with 8 chars and need
a maximum of 7 or 6 chars.
Example:
Password 2:332/504.4 Password
ΓòÉΓòÉΓòÉ 11.3.3.5.2. PasswordFile ΓòÉΓòÉΓòÉ
PasswordFile <PasswordFile>
Allows to include a password file that contains many
address/password couples, one per line.
In this file you can omit the "Password" keyword.
If you like, you can use some "Password" keywords
together with one or more "PasswordFile".
Please note that the definitions found in this file have
effect on the current (Output or Input) block ONLY.
FastLst writes to the log file which source or output
nodelist is affected by each passwordfile; so, in case
of doubts, just check the logs.
Example:
PasswordFile fidonet.pwd
ΓòÉΓòÉΓòÉ 11.3.3.5.3. Phone ΓòÉΓòÉΓòÉ
Phone <Addr> <Phone> [<NodeFlags> [<Cost> [<UCost>]]]
Allows to override a nodelist phone number and
optionally the corresponding "NodeFlags" and costs.
if <Phone> contains non-numeric characters, it is taken
verbatim
If <Phone> contains only digits and dashes '-', it is
considered a PSTN number and MUST be in the form used in
the source nodelist (dial translation will be applied
normally).
<NodeFlags> has the same meaning as in the NodeFlags
statement. To specify an overriding empty <NodeFlags>,
use a single comma.
<Cost> and <UCost> have the same meaning as in the Cost
statement.
Examples:
<Phone> override only:
Phone 2:332/501.1 39-59-399999 ; Normal override
Phone 1:106/2000 juge.com ; internet address
Phone 1:123/4567 123.456.789.012 ; IP address
Phone 2:245/6789 "Bob.scr" ; quoted script name
<Phone> and <NodeFlags> overrides:
Phone 2:332/501.0 39-59-499999 V34,CM ; Set new flags
Phone 2:332/501.1 39-59-399999 , ; Set NO flags
<Phone>, <NodeFlags> and <Cost>/<UCost> overrides:
Phone 2:332/501 39-59-499999 V34,CM 10 0
Phone 2:332/502 mega.com VM 0 ; <Cost> == <UCost>
ΓòÉΓòÉΓòÉ 11.3.3.5.4. NodeFlags ΓòÉΓòÉΓòÉ
NodeFlags <Addr> <NodeFlags>
Allows to substitute the flags listed in the nodelist
entry of <Addr>.
If you want to change the CM flag or modem type flags
(HST, V32b, ZYX) etc, you can use this verb. Please note
that the old flags are lost, so you need to indicate all
the necessary flags.
Please note that <NodeFlags> might be empty.
Example:
NodeFlags 2:332/501.0 CM,H16,V32b
ΓòÉΓòÉΓòÉ 11.3.3.5.5. Flags ΓòÉΓòÉΓòÉ
Flags <Addr> <Flags>
The Flags statement allows to set the "user defined"
bits in the Flags word of the compiled nodelist entry.
These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is
the 6th bit and F is the 16th bit of the word.
These bits are "ORed" with those already set by the
"FlagDef" table.
If you need to zero some of the bits, please specify the
source flags with the "NodeFlags" statement.
Example:
Flags 2:332/501.0 AB5 ; Set bits 5,A & B.
ΓòÉΓòÉΓòÉ 11.3.3.5.6. Cost ΓòÉΓòÉΓòÉ
Cost <Addr> <Cost> [<UCost>]
<Cost> and <UCost> are in the range 0->65535.
Overrides the Cost and User_Cost fields of <Addr> in the
compiled nodelist. If no <UCost> is given, it's taken
equal to <Cost>.
Example:
Cost 2:332/501.0 150
ΓòÉΓòÉΓòÉ 11.3.3.6. Segment Selection ΓòÉΓòÉΓòÉ
SEGMENT SELECTION
The following verbs allow to include or exclude selected
<NodeList> segments. If you do not use them, the full <NodeList>
is compiled. Be aware that the process of checking each address
against the list of segments to be included or excluded might
slow down the compilation, even if some gain could come from the
exclusion of large segments.
These statements are obviously illegal in a "NoCompile" block.
These statements can be used in an Input block to affect that
nodelist only.
ΓòÉΓòÉΓòÉ 11.3.3.6.1. IncAddr ΓòÉΓòÉΓòÉ
IncAddr <PartAddrLst>
If you want to selectively include nodelist segments,
you can use this option: only zones, regions, nets,
hubs, nodes, points that are listed in <PartAddrLst>
will be present in the output files. You can specify
zone, region/net, hub/node and point numbers.
Example:
IncAddr 1 2:33 2:200/100 3:632 4:801/17
Compiles: zone 1, region 33 of zone 2, hub 100 of net
200 of zone 2, net 632 of zone 3, node 4:801/17
ΓòÉΓòÉΓòÉ 11.3.3.6.2. ExcAddr ΓòÉΓòÉΓòÉ
ExcAddr <PartAddrLst>
If you want to exclude some segments from the
compilation, you can list them in <PartAddrLst>, in the
same way as for "IncAddr". You can use either "IncAddr"
or "ExcAddr" or both of them to Include only selected
segments and exclude sub-segments.
Example:
ExcAddr 2:332/500
Excludes Hub 500 of net 332 of zone 2.
ΓòÉΓòÉΓòÉ 11.3.4. Input Block ΓòÉΓòÉΓòÉ
I N P U T B L O C K
The Input Block starts with a "NodeList" statement and continues
until the start of the next Input or Output Block (NodeList or
Version7 statement respectively) or the end of the configuration
file.
ΓòÉΓòÉΓòÉ 11.3.4.1. NodeList ΓòÉΓòÉΓòÉ
NodeList <NodeList> [<PartAddr> [<Region> [<Hub>]]]
Start of a block of config verbs defining the processing
of the specified <NodeList> file. You can use many
"NodeList" statements to compile several different
source nodelists into the same output files specified by
the preceding "Version7+" statement. Each "NodeList"
verb marks the beginning of a new input-nodelist
processing-info block.
When an address is present in more than one <NodeList>
(e.g. you compile both the full nodelist and the faster
updated local region or zone segment) only the entry
found in the last compiled <NodeList> is put in the
indices. To have the most up-to-date entries in your V7
indices, please include local segments after the larger
list.
<NodeList> is the name of the input nodelist.
If you don't specify a path, <InputPath> is assumed.
If a terminal ".???" is specified, all the files with 3
digits in the place of '???' are examined and that with
the latest 3 digit day of the year is chosen for
compilation.
The optional <PartAddr> is a partial address that must
be specified for nodelist segments that do not have full
address info. For example, a REGION segment usually
starts with the "Region," keyword and does not contain
any Zone info: its up to you to tell FastLst which zone
we are talking about. For the same reason you should
provide zone and net info when compiling a Hub segment.
For Net segments you should also specify the <Region>
and for simple lists of nodes or points the <Hub>.
Anyway FastLst is smart enough to automagically gather
Region and Hub information (when possible) from:
- same node present in a larger segment (Region and Hub)
- other node with same zone:net (Region only)
- Boss of the point (Region and Hub)
Note: points that do not have a Boss are removed from
the indices.
Examples:
IMPORTANT: Please note that the following lines
represent a list of examples, NOT an example of
multiple nodelist compilation.
After each "NodeList" verb, you must specify all the
statements that affect the compilation of that
particular source file.
1) NodeList nodelist.??? ; Fidonet nodelist
2) NodeList region.033 2 ; Region 33 list, zone 2
3) NodeList region24.??? 2 ; Region 24 list, zone 2
4) NodeList net.332 2 33 ; Net list, zone 2, region 33
5) NodeList hub.500 2:332 33 ; Hub list, zone 2, net 332,
; region 33
6) NodeList locnode.500 2:332 33 500
; Some nodes, zone 2, net 332,
; region 33, hub 500
7) NodeList points.504 2:332/504
; Points of 2:332/504 in
; "Point," format
8) NodeList morenode.lst ; Some nodes in the "Node,"
; format. No <PartAddr> required
; since the "Node," line gives
; full address info.
9) NodeList ptlist.??? ; Point List in the "Boss,"
; format. No <PartAddr> required
; since the "Boss," line gives
; full address info.
ΓòÉΓòÉΓòÉ 11.3.4.2. Input Section ΓòÉΓòÉΓòÉ
Input Section
The following statements affect the handling of the nodelist
specified by the last "NodeList" statement (current Input
Block).
ΓòÉΓòÉΓòÉ 11.3.4.2.1. NodeDiff ΓòÉΓòÉΓòÉ
NodeDiff <NodeDiff>
<NodeDiff> is the name of the nodediff file.
If you don't specify a path, <InputPath> is assumed.
<NodeDiff> must terminate with ".???". FastLst will
search for a suitable <NodeDiff>, considering the files
that have a 3 digit day of the year in the place of the
trailing '???'.
Example:
NodeDiff NODEDIFF.???
ΓòÉΓòÉΓòÉ 11.3.4.2.2. ArcList ΓòÉΓòÉΓòÉ
ArcList <ArcList> [<Keep#>]
You can specify the name of the archive containing
<NodeList>. It is necessary if you use automatic
extraction/rearchiving, but it can even be used only to
delete old files.
<ArcList> is used to extract new nodelists, to compress
them using the methods defined in "ArcMethod", to
compress the new nodelists after the application of
nodediffs.
If <ArcList> has a terminating ".???", all the files
that have a suitable fixed (.zip, .lzh etc.) or variable
(.z10, .z17, .l10, .l17 etc.) extension are considered,
taking the digits as the last 2 digits of the day of the
year.
If you really want to limit search to a specified fixed
or variable extension, you can do:
"ArcList nodelist.zip", to consider .zip only;
"ArcList nodelist.z??", to consider .z?? only.
<Keep#> optionally specifies the number of archives to
be kept, basing on the day of the year (the modification
file date is also used to infer the correct
chronological order).
If you maintain archives with multiple different
extensions (.z??, .l??, etc.) the actual number of files
increases, since multiple files with the same day
extension count for one.
The description associated to the deleted files is
removed from FILES.BBS.
Example:
ArcList nodelist.??? 1
ΓòÉΓòÉΓòÉ 11.3.4.2.3. ArcDiff ΓòÉΓòÉΓòÉ
ArcDiff <ArcDiff> [<Keep#>]
You can specify the name of the archive containing
<NodeDiff>. It is necessary if you use automatic
extraction/rearchiving, but it can even be used only to
delete old files.
<ArcDiff> must terminate with ".???".
All the files that have 2 digits in the place of the
last 2 '?' are examined, taking the digits as the last 2
digits of the day of the year.
If you really want to limit search to a specified
extension, you can do:
"ArcDiff nodediff.z??", to consider .z?? only.
<Keep#> optionally specifies the number of archives to
be kept, basing on the day of the year (the modification
file date is also used to infer the correct
chronological order). In the case of multiple archive
extensions, the actual number increases consequently.
The description associated to the deleted files is
removed from FILES.BBS.
Example:
ArcDiff nodediff.??? 5
ΓòÉΓòÉΓòÉ 11.3.4.2.4. ArcListDesc/ArcDiffDesc ΓòÉΓòÉΓòÉ
ArcListDesc <Desc>
ArcDiffDesc <Desc>
You can specify a description to be added to FILES.BBS
for the new nodelist and nodediff files created by
FastLst.
Some parameters are available:
%d : the 3 digit day number (0 padded)
%a : the archiver name
%D : the date, USA format (Feb 10, 1995)
%L : the date, Local format
Example:
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d (%D), %a format
ΓòÉΓòÉΓòÉ 11.3.4.3. Local Specifications ΓòÉΓòÉΓòÉ
Local Specifications
You can use here the same statements described in the "Global
Section B" and (if we are not in a "NoCompile" block) "Global
Section C" and "Export Global Section" (see the Export Block
below).
ΓòÉΓòÉΓòÉ 11.3.4.4. Address Specific Stuff ΓòÉΓòÉΓòÉ
ADDRESS SPECIFIC STUFF
You can specify here the address specific stuff that is related
to the current source nodelist (if not inside a "NoCompile"
block).
If you have already used the "Output section" for specifying
this kind of information, you can skip this section.
WARNING:
Often you will compile segments of a previously compiled
nodelist. For example you could have a "NodeList nodelist.???"
block for the world nodelist and then a "NodeList region.033"
block for your region's nodelist segment.
The majority of entries in the latter will be duplicates of
entries already found in the former. However, in the case of
duplicates, only the entries found in the last involved
"NodeList" block will go to the indices and be active. This way
you can compile the full world nodelist while keeping your
segment up-to-date with local segments that get updated faster
than the full nodelist.
When you have to specify "Address Specific Stuff" for nodes that
are present in more than one "NodeList", you must do that in the
last involved "NodeList" block (or in the Output Section, of
course), otherwise your indications will have no effect.
For a list of allowed statements, please see the "Address
Specific Stuff" section of the "Output" section above.
ΓòÉΓòÉΓòÉ 11.3.4.5. Segment Selection ΓòÉΓòÉΓòÉ
SEGMENT SELECTION
You can use here the same statements described in "Segment
Selection" in the Output Section (if not inside a "NoCompile"
block).
ΓòÉΓòÉΓòÉ 11.3.4.6. Export Block ΓòÉΓòÉΓòÉ
EXPORT Block
FastLst can "export" segments of nodelist: e.g. you can export
the Region 25 from the world nodelist to a file called
Region25.???, where ??? stands for the day of the year. Note
that this feature is for exporting segments of nodelist to a
dedicated file. To compile segments you should continue using
the "Segment Selection" section of FastLst.Cfg.
These blocks MUST be at the _END_ of an "Input Block"; there can
be multiple Export Blocks in a single Input Block.
Obviously the Export Block is available for compiled nodelists
only, thus it is illegal inside a "NoCompile" block.
The export is done ONLY when a new NodeList is found (or when
the file to be exported exists neither in uncompressed nor in
archived form), even if the config file is changed. So, you can
safely hatch the created arcfile via the AfterArcExport command
with no danger of hatching it all the times you change something
in the cfg. Under these conditions, if you really want to export
anyway, you must use the -i command line switch.
IMPORTANT: If you use the same export filename for multiple
source nodelists, all the exported segments are appended one
another. This way, if you like, you can make FastLst generate a
"plain" nodelist file with many different source nodelists in
it, just appended one after another. Some people need this
feature to create input for some other program. For this feature
to work, you need to specify the '+' parameter in the "Export"
statement. See "Export Example" below.
ΓòÉΓòÉΓòÉ 11.3.4.6.1. Export ΓòÉΓòÉΓòÉ
Export [+] <file> [<PartAddrLst>]
The '+' sign must be specified when you want to create a
joined list by exporting multiple nodelists to the same
export <file>. This way the exported file will be
created every time the nodelist is compiled and its
timestamp will not be changed to be equal to the source.
<file> is the name of the file to which you want to
export the selected segment(s).
<PartAddrLst> is the partial address list of segments to
be exported. Usually it is a single partial address.
If omitted, the entire nodelist is exported (useful to
create a joined nodelist).
This statement marks the start of an "Export Block".
Multiple "Export Blocks" are allowed in the same "Input
Block".
N.B. The Export blocks must be at the _END_ of an input
block. See "Export Example" below.
Example:
Export region25.??? 2:25
ΓòÉΓòÉΓòÉ 11.3.4.6.2. Export Section ΓòÉΓòÉΓòÉ
Export Section
The following verbs define the parameters for the Export
specified by the last "Export" statement.
ΓòÉΓòÉΓòÉ 11.3.4.6.2.1. ArcExport ΓòÉΓòÉΓòÉ
ArcExport <arcfile> [Keep#]
<arcfile> is the name of the archive file to which you
want to compress the exported <file>.
[Keep#] is the optional number of archive versions to be
kept, basing on the day of the year (the modification
file date is also used to infer the correct
chronological order).
Example:
ArcExport region25.??? 2
ΓòÉΓòÉΓòÉ 11.3.4.6.2.2. ArcExportDesc ΓòÉΓòÉΓòÉ
ArcExportDesc <description>
<description> is the description to be applied to
FILES.BBS when a new archive is created.
Example:
ArcExportDesc Region 25 %D, %a format
ΓòÉΓòÉΓòÉ 11.3.4.6.3. Export Global Section ΓòÉΓòÉΓòÉ
Export Global Section
The following verbs can be used in the "Export Section" of an
"Export Block", in the "Input Section" of an "Input Block", in
the "Output Section" of an "Output Block", in the "Global
Section".
In few words, they are legal everywhere except for the
"NoCompile" block.
Depending on their positions, they affect the involved nodelists
only.
ΓòÉΓòÉΓòÉ 11.3.4.6.3.1. ArcExportMethod ΓòÉΓòÉΓòÉ
ArcExportMethod <meth>[,<f>] ...
Specifies the archive type(s) to be created for the
exported file.
<meth> is the archiver name as defined in Compress.Cfg.
<f> is the optional first letter to be used for variable
archive extensions.
Example:
ArcExportMethod zip lh,H
ΓòÉΓòÉΓòÉ 11.3.4.6.3.2. BeforeArcExport/AfterArcExport ΓòÉΓòÉΓòÉ
BeforeArcExport <command>
AfterArcExport <command>
Commands to be run before/after archiving the exported
file.
<command> can be any type of command (executable file,
batch file, internal command, alias, etc.) and supports
the %a (full archive name) and %f (name of the file to
be compressed, no path) and is run from the directory
where %f resides.
WARNING: since <command> is executed from the directory
where the file to be compressed belongs, you might need
to specify the location of the config files used by the
programs invoked via <command>.
Example:
AfterArcExport Hatch %a
ΓòÉΓòÉΓòÉ 11.3.4.6.3.3. ExportNeededBeforeKill ΓòÉΓòÉΓòÉ
ExportNeededBeforeKill
Specifies that the exported file is needed by the
"BeforeKillSource" command.
ΓòÉΓòÉΓòÉ 11.3.4.6.4. Export Example ΓòÉΓòÉΓòÉ
Export Example:
NodeList nodelist.???
NodeDiff nodediff.???
ArcList nodelist.??? 2
ArcDiff nodediff.??? 5
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
Export region25.??? 2:25
ArcExport region25.??? 1
ArcExportDesc Region 25 %D, %a format
ArcExportMethod zip lh
AfterArcExport Hatch %a
Export region24.??? 2:24
ArcExport region24.??? 1
ArcExportDesc Region 24 %D, %a format
ArcExportMethod zip
Export Example to generate a joined list:
NodeList nodelist.???
NodeDiff nodediff.???
ArcList nodelist.??? 2
ArcDiff nodediff.??? 5
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
Export + megalist.Lst
NodeList zonelist.???
NodeDiff zonediff.???
ArcList zonelist.??? 2
ArcDiff zonediff.??? 5
ArcListDesc Zonelist for day %d (%D), %a format
ArcDiffDesc Zonediff for day %d,(%D), %a format
Export + megalist.Lst
ArcExport megalist.??? 1
ArcExportDesc MegaList, %a format
ArcExportMethod zip lh
ΓòÉΓòÉΓòÉ 11.4. Compress Definition File ΓòÉΓòÉΓòÉ
COMPRESS DEFINITION FILE
The file specified in the CompressCfg statement is a sequence of
Archive definition blocks, each one starting with "Archiver" and
ending with "End Archiver". You can find an example in the
Compress.Cfg file included in the distribution pack.
The order of the archive definition blocks within this file may
be important: when trying to unpack a compressed file, the list
of archivers is scanned in a reverse order.
In the case of two archivers that use the same identification
string (e.g. ARC and PAK), you must specify the archiver that
can unpack both (PAK) after the other one (ARC).
The compress.cfg file can be shared between DOS/NT and OS/2
applications: the "DOS" and "OS2" keywords are available to
distinguish between the commands to be used under DOS/NT and
OS/2.
O.S. specific archivers or commands must be prefixed with the
relevant keyword.
IMPORTANT NOTE: The lines that begin with "DOS" or "OS2" are
parsed by the DOS/NT and OS/2 versions respectively. If you need
the OS/2 version to execute a DOS command, you MUST NOT use the
DOS keyword: if you do, it will never parse that line; if you do
not, it will execute the DOS command "normally", provided you
have installed OS/2's Dos support.
See the examples below.
ΓòÉΓòÉΓòÉ 11.4.1. Archiver ΓòÉΓòÉΓòÉ
Archiver <ARCname>
Starts the Archive definition block.
<ARCname> is the name used to identify this archiver.
Example:
Archiver ZIP
ΓòÉΓòÉΓòÉ 11.4.2. Extension ΓòÉΓòÉΓòÉ
Extension <ext>
Specifies the default extension for the compressed
files.
Example:
Extension ZIP
ΓòÉΓòÉΓòÉ 11.4.3. Ident ΓòÉΓòÉΓòÉ
Ident <ofs>,<ID>
<ofs> is a decimal integer number representing the
offset at which an archive identity marker <ID> must be
present.
Negative values can be used to indicate offsets from the
END of a compressed file. -1 means "the last byte", -2
"the second last byte" and so on.
<ID> is a series of hexadecimal figures which represent
the bytes of the marker string that must be present at
the specified offset of the archive file.
Example:
Ident 0,504b0304 ; "PK^c^d"
ΓòÉΓòÉΓòÉ 11.4.4. Add ΓòÉΓòÉΓòÉ
Add <command>
Specifies the command to add files to an archive.
%a and %f are translated to the name of the archive and
file to add.
Example:
Add zip -jk %a %f
ΓòÉΓòÉΓòÉ 11.4.5. Extract ΓòÉΓòÉΓòÉ
Extract <command>
Specifies the command to extract files from an archive.
%a and %f are translated to the name of the archive and
file to extract.
Example:
Extract unzip -qqnjC %a %f
ΓòÉΓòÉΓòÉ 11.4.6. View ΓòÉΓòÉΓòÉ
View <command>
This line is recognized and accepted for compatibility,
but not used.
ΓòÉΓòÉΓòÉ 11.4.7. End Archiver ΓòÉΓòÉΓòÉ
End Archiver
This statement is used to close a Archive definition.
ΓòÉΓòÉΓòÉ 11.4.8. Examples ΓòÉΓòÉΓòÉ
Examples
Complete example 1 (you need OS/2 only):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
Add zip -jk %a %f
Extract unzip -qqnjC %a %f
View unzip -v %a
End Archiver
Complete example 2 (you need DOS only):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
Add pkzip -a %a %f
Extract pkunzip -n %a %f
View pkzip -v %a
End Archiver
Complete example 3 (you need both OS/2 and DOS):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
OS2 Add zip -jk %a %f
DOS Add pkzip -a %a %f
OS2 Extract unzip -qqnjC %a %f
DOS Extract pkunzip -n %a %f
OS2 View unzip -v %a
DOS View pkzip -v %a
End Archiver
Complete example 4 (archiver to be used under DOS only):
DOS Archiver ZOO
DOS Extension ZOO
DOS Ident 0,5a4f4f ; "ZOO"
DOS Add zoo a: %a %f
DOS Extract zoo e:O %a %f
DOS View zoo v %a
DOS End Archiver
Complete example 5 (it's a DOS executable, to be used under
DOS or OS/2 indifferently):
Archiver ZOO
Extension ZOO
Ident 0,5a4f4f ; "ZOO"
Add zoo a: %a %f
Extract zoo e:O %a %f
View zoo v %a
End Archiver
ΓòÉΓòÉΓòÉ 12. TroubleShooting ΓòÉΓòÉΓòÉ
T R O U B L E S H O O T I N G
ΓòÉΓòÉΓòÉ 12.1. Extraction problem ΓòÉΓòÉΓòÉ
Extraction problem
Problem:
FastLst does not extract the correct
nodelist/nodediff.
Solution:
Perhaps there is some nodelist/nodediff with corrupted
file date. Check your "ArcPath", manually extract to
the "InputPath" the required nodelist/nodediff and
delete the archive (or reset its file-date so that it
is similar to that of the enclosed file). FastLst will
automatically rearchive the nodelist/nodediff if you
use "ArcMethod"/"ArcDiffMethod", otherwise you can
rearchive manually.
ΓòÉΓòÉΓòÉ 12.2. Out of Memory ΓòÉΓòÉΓòÉ
Out of Memory
Problem:
FastLst runs out of memory (Dos versions).
Solution:
- give more DPMI memory to FastLst
- enable the DOS4GW virtual memory mode, using the
DOS4GVM environment variable (e.g. for 16MB virtual
allocation size: SET DOS4GVM=VirtualSize#16384).
This works under real Dos only: if you are using
OS/2 dos sessions, use a higher DPMI_MEMORY_LIMIT in
the Dos settings.
ΓòÉΓòÉΓòÉ 12.3. Problems with Empty Phone entries ΓòÉΓòÉΓòÉ
Problems with Empty Phone entries
Problem:
Some program behaves oddly while accessing entries
that contain an empty phone number.
Solution:
The problem might be caused by the cost that is
assigned to empty-phone nodes (65535 by default).
Try using the "CostNullPhone" global statement to give
lower costs.
Example:
CostNullPhone 900 0
ΓòÉΓòÉΓòÉ 12.4. Slow processing ΓòÉΓòÉΓòÉ
Slow processing
Problem:
FastLst works very slowly.
Solution:
Perhaps you are compiling a large nodelist or set of
nodelists on a system with few MegaBytes of free
physical RAM, so that the OS needs to extensively use
virtual memory. Try using the "LinkOnDisk" statement
in the configuration file.
ΓòÉΓòÉΓòÉ 12.5. System performance degradation ΓòÉΓòÉΓòÉ
System performance degradation
Problem:
FastLst loads the system excessively, so that other
OS/2 tasks don't perform properly (OS/2 version).
Solution:
Use the "Priority Idle" statement in the configuration
file, so that FastLst receives its time slices only
when other processes with higher priority are idle.
ΓòÉΓòÉΓòÉ 12.6. I want maximum speed ΓòÉΓòÉΓòÉ
I want maximum speed
Problem:
I run FastLst while the communications are off, so I
would like it to run as fast as possible even if it is
in the background and other tasks are active (OS/2
version).
Solution:
Use the "Priority High 31" statement in the
configuration file, so that FastLst receives the
maximum priority for "non time-critical" processes.
ΓòÉΓòÉΓòÉ 12.7. Archived Diffs are not applied ΓòÉΓòÉΓòÉ
Archived Diffs are not applied
Problem:
FastLst does not apply the archived Diffs.
Solution:
Remember that "InputPath <path>" is the default path
for lists and diffs, while "ArcPath <path>" is the one
for archives.
Please compare your Compress.cfg with the example one,
check the paths and try the commands manually.
Check the day-extensions and time-stamps of the
relevant files.
ΓòÉΓòÉΓòÉ 12.8. Dos/32 DOS4GW exception ΓòÉΓòÉΓòÉ
Dos/32 DOS4GW exception
Problem:
The Dos/32 version of FastLst aborts with an exception
from the Dos extender.
Solution:
Try booting with a "clean" config.sys and autoexec.bat
(the Dos extender might be incompatible with some of
your loaded drivers or TSRs.
ΓòÉΓòÉΓòÉ 12.9. Dial Scripts and VMODEM addresses ΓòÉΓòÉΓòÉ
Dial Scripts and VMODEM addresses
Problem:
How can I put script names or internet addresses in
the place of a phone number ?
Solution:
You may use the "Phone" statement.
Example:
Let's suppose the following Modem Type table is
defined:
TypeDef
X75 1
V34 2
VM 3
End
You may use a Phone override of this kind:
Phone 2:345/678 domain.com VM,CM 10 0
And a ModemTrans (for Binkley's VMODEM line):
ModemTrans 0
ModemTrans 1
ModemTrans 2
ModemTrans 3 ATDT# ; Vmodem
ΓòÉΓòÉΓòÉ 12.10. Region and zone-level Export ΓòÉΓòÉΓòÉ
Region and zone-level Export
Problem:
How can I export a Region segment together with the
zone-level entries ?
Solution:
The zone level entries have the Region/Net field equal
to the zone number; you can use the Export statement
in the following way:
export MyR33.??? 1:1 2:2 2:33 3:3 4:4 5:5 6:6
ΓòÉΓòÉΓòÉ 12.11. Support ? ΓòÉΓòÉΓòÉ
Support ?
Problem:
I cannot find the solution to my problems.
Solution:
- Try linking the APWORKS support echo
- Try asking your local supporter
- Try asking the author directly
You can find the addresses in the ReadMe.1st file.
ΓòÉΓòÉΓòÉ 13. SHAREWARE ΓòÉΓòÉΓòÉ
S H A R E W A R E
If you like this program and continue using it, you should pay
the author for his work, as per the ShareWare concept of
distribution.
Please see LICENSE.DOC and REGISTER.DOC for information.
Thank you for your interest in FastLst.
ΓòÉΓòÉΓòÉ 13.1. License.Doc ΓòÉΓòÉΓòÉ
ΓòöΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòù
Γòæ Γòæ
Γòæ F A S T L S T Γòæ
Γòæ Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
L I C E N S E
P O L I C Y
June 1997
This software (program and accompanying documentation) are:
Copyright (c) 1992-1997 Alberto Pasquale, all rights reserved.
DISTRIBUTION FORMAT
This software is distributed in a locked RAR archive, with
embedded authenticity-verification information.
The distribution of modified archives, including those derived
from the conversion to a different archiver, is explicitly
prohibited.
When the RAR extension is not accepted, you should either store
the original RAR archive inside a different one (e.g. RAR inside
ZIP) or get the self-extracting executable that is prepared by
the author (available on ftp.bmtmicro.com/bmtmicro).
S H A R E W A R E
This software is distributed as ShareWare: you are granted the
right to evaluate the program for a maximum of 30 days before
paying the author. After the evaluation period, you are required
to either register (see REGISTER.DOC) or stop using the program.
You are encouraged to distribute the original and unmodified
package freely, in any form and on any media, provided you do
not charge any fee for the program itself.
This package could be included in CD-ROM collections,
subscription download areas, BBS packages, provided it remains
in its complete and unmodified original archive.
In any case, the user must register with the author after the
evaluation period.
IMPORTANT: the registration is NOT a trade transaction, it is to
be considered as payment of royalties; therefor the registration
key is personal and NOT transferrable.
DISCLAIMER
This software is provided on an "as is" basis without warranty
of any kind, expressed or implied, including but not limited to
the implied warranties of merchantability and fitness for a
particular purpose.
The person using the software bears all risk as to its quality
and performance.
The author will not be liable for any special, incidental,
consequential, indirect or similar damages due to loss of data
or any other reason.
ΓòÉΓòÉΓòÉ 13.2. Register.Doc ΓòÉΓòÉΓòÉ
******* ** **** ****** **** **** ******
** * **** ** ** * ** * ** ** ** * ** *
** * ** ** ** ** ** ** **
**** ** ** **** ** ** **** **
** * ****** ** ** ** * ** **
** ** ** ** ** ** ** ** ** ** **
**** ** ** **** **** ******* **** ****
(C) Copyright 1992-1997 by Alberto Pasquale
A L L R I G H T S R E S E R V E D
For licensing terms and disclaimer, see LICENSE.DOC.
This program required a lot of work: by registering you will
support me in developing this and other similar products.
You will receive a registration Key that removes the initial 2
second pause and makes the program show "Registered <month/year>
To: <Reg.String>" instead of the registration request banner.
The registration is guaranteed valid for all future minor
updates and, in any case, for all versions that will be released
in a period of 2 years after registration. After this period, an
upgrade fee might possibly be required in the case of major new
releases.
The registration key works FOREVER with the current version of
the program for ANY platform: you do not have to pay anything in
the case you change your operating system.
ΓòöΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòù
Γòæ Γòæ
Γòæ Registration fee: US$ 25, DEM 35, ITL 30,000 or (see below) Γòæ
Γòæ Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
ΓòÉΓòÉΓòÉ 13.2.1. How to Register ΓòÉΓòÉΓòÉ
HOW TO REGISTER
Registering is quite easy; you can register:
- Directly with me by cash, check or international
(not domestic !) postal money order.
- via local Registration Site in Canada, Germany, UK.
- via BMT Micro (Wilmington, NC, USA), by credit card, money
order, cashiers check, personal check, German or British
currency.
- via PsL (Houston, TX, USA), by credit card.
The registration key will be delivered via internet e-mail or
crash netmail depending on availability; fax and postal mail
will be used only in case of problems.
Should you not receive your registration key in a reasonable
time, please feel free to contact me.
Please allow at least 3 weeks for response to international
airmail.
Please address your requests, complaints, suggestions to:
Alberto Pasquale of 2:332/504@fidonet
alberto.pasquale@interbusiness.it
2:332/504@fidonet +39-59-246112 X75 V120 X2 V34+ V32T H16
FAX: +39-59-246113
ΓòÉΓòÉΓòÉ 13.2.1.1. Author's ΓòÉΓòÉΓòÉ
Hot to register directly with the author
You have to send the registration information and money to:
Alberto Pasquale
Viale Verdi 106
41100 Modena
Italy
ΓòÉΓòÉΓòÉ 13.2.1.1.1. Cash ΓòÉΓòÉΓòÉ
Cash:
Just put the (accurately hidden) banknotes (US$ 25, DEM
35, ITL 30,000) together with Register.For in an envelope.
If you do not have US dollars, German marks or Italian
liras and do not like going to the bank, you can send the
equivalent in your currency, provided it is commonly
exchangeable.
ΓòÉΓòÉΓòÉ 13.2.1.1.2. Check ΓòÉΓòÉΓòÉ
Check:
Just put the check (accurately hidden) together with
Register.For in an envelope. Please read carefully the
following instructions:
- Eurocheque: ITL 30,000 (thirty thousand).
- Italian check: 30.000 lire
- Other (bank) checks: US$ 25, DEM 35 or equivalent.
ATTENTION: NO Postal Checks please.
ΓòÉΓòÉΓòÉ 13.2.1.1.3. Postal Money Order ΓòÉΓòÉΓòÉ
Postal Money Order:
Just go to the post office and ask for an _INTERNATIONAL_
postal money order. It is best to go to a major post
office, since minor ones are generally not used dealing
with international money orders. Usually you can choose
whether to use your currency or the recipient's.
Please be sure to specify the necessary registration
information in the "sender message" field or send
Register.For separately to the author.
- International money order in italian liras: ITL 30,000
(thirty thousand).
- International money order in your currency: US$ 25,
DEM 35 or equivalent.
- Italian money order "vaglia": 30.000 lire.
IMPORTANT: Please DO NOT send me normal "domestic" postal
money orders, since they are not payable outside of your
country; you must use INTERNATIONAL postal money orders.
If you would like to receive the key soon, you
can FAX me (+39-59-246113) the receipt of the
postal money order together with REGISTER.FOR.
ΓòÉΓòÉΓòÉ 13.2.1.2. Local Registration/Support sites ΓòÉΓòÉΓòÉ
Local Registration/Support Sites:
If you choose this way, you will have contacts with the
local supporter only: you will send him the money and
registration form; in a few days you will receive your
key.
ΓòÉΓòÉΓòÉ 13.2.1.2.1. Canada ΓòÉΓòÉΓòÉ
Canada:
Mary-Anne Wise
58-771 Columbia St.
New Westminster, BC V3M 1B6
Fidonet: 1:153/831
Internet: MWISE@bc.sympatico.ca
Reg. Fee: CDN 32.50
Methods of payment: cheque, money order
ΓòÉΓòÉΓòÉ 13.2.1.2.2. Germany ΓòÉΓòÉΓòÉ
Germany:
Roland Schiradin
Stockbornstr. 10
65343 Eltville
Germany
Fidonet: 2:2454/169 Mail Only
Internet: schiradi@tap.de
Reg. Fee: DEM 35
He has the APWORKS support echo and TIC file-areas for
my programs available. Besides he can provide you with
information about the nodes carrying APWORKS in
Germany.
He has the latest version of ApWorks programs available
for F/R with the same magics listed in Readme.1st.
ΓòÉΓòÉΓòÉ 13.2.1.2.3. United Kingdom ΓòÉΓòÉΓòÉ
United Kingdom:
Vince Coen
Applewood House
Epping Road
Roydon, Harlow
Essex, CM19 5DA, UK
Fidonet: 2:257/609
Reg. Fee: GBP 15.00
Payment can be in Cash, Cheque (bankers card number on
order form please), EuroCheck, Credit Card or direct to
my bankers. Payment MUST be in Pounds Sterling.
For payment through the bank:
Bank: First Direct.
Sort code: 40-47-86.
Account: 00449334
Account name: Vincent Coen.
Payment reference must include Sysop name and node number.
For payment via Visa/Mastercard/Eurocard there is a 5.50%
surcharge which will add 0.83 to the cost of 15.00, i.e.
15.83 Pounds Sterling.
Credit Card details needed: Name and address of card
holder, Card number and card expiry date.
The latest version of ApWorks programs are available
for F/R with the same magics listed in Readme.1st.
ΓòÉΓòÉΓòÉ 13.2.1.3. BMT Micro ΓòÉΓòÉΓòÉ
How to register with BMT Micro
You have to fill in the BmtMicro.For registration form and send
it (or equivalent information) to BMT Micro.
The registration fee is US$ 25.
ATTENTION: for any question regarding the program, its
registration, support etc, you must contact me directly.
Please contact BMT Micro to order ONLY.
Usually your key will be delivered within 2 business days.
In certain holiday periods (Christmas, Easter, end of July,
first half of August) there might be some delay (a few days for
Christmas or Easter, a couple of weeks in July/August). If you
think your order is particularly late, please contact me first !
Mail Orders To: BMT Micro
PO Box 15016
Wilmington, NC 28408
U.S.A.
Voice Orders: 8:00am - 7:00pm EST (-5 GMT)
(800) 414-4268 (Orders only)
(910) 791-7052 (Orders / Order Inquires)
Fax Orders: (800) 346-1672 24 hours, 7 days a week
(910) 350-2937 24 hours, 7 days a week
Online Orders via BBS: (910) 350-8061 10 lines, all 14.4K
(910) 799-0923 28.8k line
On the Web: http://www.bmtmicro.com
http://www.os2ss.com
http://www.frankson.aus.net/bmtaust/
Ordering and general ordering questions:
Via AOL: bmtmicro
via MSN: bmtmicro
Via Prodigy: HNGP66D
via Compuserve: 74031,307
via Internet: orders@bmtmicro.com
telnet@bmtmicro.com
Credit cards: Visa, Mastercard, Discover, American Express,
Diners Club, Carte Blanche.
They also accept money orders, cashiers checks, personal checks.
Personal checks are subject to clearance.
US Currency is welcome (only by registered mail, return receipt
requested).
BMTMICRO ORDERING FROM INSIDE GERMANY ONLY
==========================================
Persons in Germany may also transfer funds into the BMTMICRO
account with Deutsche Bank. Once the money is deposited you
may either fax a confirmation to BMTMICRO with proof of deposit
or wait until Deutsche Bank notifies them of the transaction
(usually 10-18 business days). Account information is as
follows:
Deutsche Bank / Frankfurt Branch
EmpfДnger: Thomas Bradford / BMT Micro
Konto-Nummer: 0860221
Bankleitzahl: 500-700-10
When you make the transfer, be sure to put your name and the
program you are registering on the transfer.
Current exchange rates can be obtained by sending an email to
dm_to_us@bmtmicro.com. An automated reply will return todays
exchange rates.
It is very important that you send BMTMICRO a completed order
form by either email or fax if you deposit money into this
account for a registration. Fill the order form out as usual
except in the credit card number field put "DEUTSCHE BANK". They
will file the order and use it to match against the deposit
information they receive from the bank.
IMPORTANT!
----------
When you email BMTMICRO your order form, they will reply with an
acknowledgement. If you do not get an acknowledgement within
24 hours please send your order again in case it was lost. This
extra bit of caution can save a lot of confusion.
If you are concerned that your order is taking too long to
process, feel free to check with BMTMICRO about the status of
your order. It's important to all of us that you feel safe
doing business with BMTMICRO and please feel free to suggest
ways we can improve our service to you.
ΓòÉΓòÉΓòÉ 13.2.1.4. PsL ΓòÉΓòÉΓòÉ
How to register with PsL (by credit card)
You must fill in the PsL.Crd and Register.For forms; then
you must send BOTH of them to PSL directly (they will forward
Register.for information to me).
You can order with MasterCard, Visa, American Express or
Discover Card: the charge is US$ 25.
ATTENTION: you MUST NOT send me any information about your
credit card. If you do, I am NOT allowed to forward your credit
card info to PSL.
ATTENTION: for any question regarding the program, its
registration, key delivery etc, you must contact me directly.
You must contact PSL to order ONLY.
PSL will notify me your order within one business day and I will
usually send your key by e-mail or crash netmail within 24h, so
if you order by fax or phone, you should usually receive your
key within 2 business days.
ATTENTION: In certain "holiday" periods (Christmas, Easter, end
of July, first half of August) there might be some delay (a few
days for Christmas or Easter, a couple of weeks in July/August).
If you think your order is particularly late, please contact me
first !
ATTENTION: It may happen that the PSL operator asks you for your
preferred diskette format. You must be aware that this may be
"standard" PSL procedure, but I will send you a key ONLY (via
e-mail, crash netmail, fax or letter), since you already have
the program.
IMPORTANT: Please, be sure to always give PsL the address where
you want to receive your key: e-mail address, fidonet name _and_
address, fax number, and/or complete postal address. If you are
not in the fidonet nodelist and I don't receive enough
information, I will be forced to send you an air-mail letter
(2-3 weeks for delivery). In the case of doubts, you can send
the Register.For to me too, by e-mail, crash netmail or fax.
Credit card registrations may be made by the following methods
(please be sure to always include all the necessary information
from BOTH Register.For and PsL.Crd).
-- PsL on the Web:
http://www.pslweb.com
-- Phone PsL at:
800-2424-PsL (800-242-4775) Ext. 11471 (USA)
+1-713-524-6394 Ext. 11471 (international)
PSL Office Hours:
8:00 a.m. to 6:00 p.m. CST Monday->Friday
Be sure to have BOTH Register.For AND PsL.Crd
available to give order information to PSL.
First of all, mention the PSL part number 11471.
-- FAX PsL at +1-713-524-6398
-- Email PsL at 11471@pslweb.com
-- Write PsL at:
The Public (software) Library
P.O. Box 35705
Houston, TX 77235-5705, USA
Please, let me insist one more time:
ΓòöΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòù
Γòæ The above numbers are for ORDERS ONLY. Γòæ
Γòæ Any question about the status of the shipment of the Γòæ
Γòæ order (registration key), registration options, Γòæ
Γòæ product details, technical support, etc, must be Γòæ
Γòæ directed to the author, at the address given above in Γòæ
Γòæ this documentation. Γòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥
ΓòÉΓòÉΓòÉ 13.2.2. How to fill in Register.For ΓòÉΓòÉΓòÉ
INSTRUCTIONS FOR COMPILING REGISTER.FOR
To avoid errors in the key, please PRINT.
Thank you very much for your support !
ΓòÉΓòÉΓòÉ 13.2.2.1. Name ΓòÉΓòÉΓòÉ
Name:
Your complete name.
Example: John Doe
ΓòÉΓòÉΓòÉ 13.2.2.2. Reg ΓòÉΓòÉΓòÉ
Reg:
The registration string you want displayed by the program.
You can use any character in the IBM set (including special
national characters above ASCII 127; if you do not use code
page 437 (USA), please specify the code numbers) and you can
use lowercase and uppercase at your preference.
Maximum length: 63 characters.
Usually it should be the same as your name, in which case
you can omit this field.
ΓòÉΓòÉΓòÉ 13.2.2.3. e-mail to ΓòÉΓòÉΓòÉ
e-mail to:
This is your internet e-mail address, if available.
ΓòÉΓòÉΓòÉ 13.2.2.4. Netmail to ΓòÉΓòÉΓòÉ
Netmail to:
You have to specify the complete destination field for the
netmail message.
Examples:
John Doe of 1:200/300.4
John Doe of 1:200/300.0
ΓòÉΓòÉΓòÉ 13.2.2.5. Crash to ΓòÉΓòÉΓòÉ
Crash to:
You have to specify the data necessary for crashing the
message. Usually this should be your system or your Boss
(if you are a point).
I will call as 2:332/504@fidonet.
- If your system (or your Boss) is 24h and it is in the
fidonet nodelist, you can omit this field.
- If your system is not 24h, please give me a 24h system to
which I can crash your netmail for routing.
- If the system in consideration is not in the fidonet
nodelist, please add its complete phone number and modem
type.
Examples:
1:200/400@fidonet
9:800/700@ABCnet +1-703-4567 V34, ISDNC
ΓòÉΓòÉΓòÉ 13.2.2.6. Fax ΓòÉΓòÉΓòÉ
Fax:
This is your (24h) fax number, if any.
ΓòÉΓòÉΓòÉ 13.2.2.7. Address ΓòÉΓòÉΓòÉ
Address:
The postal address is the last opportunity of sending you
the key.
ΓòÉΓòÉΓòÉ 13.2.2.8. Version ΓòÉΓòÉΓòÉ
Version:
You should indicate BOTH the version number of the program
you are registering AND the Operating System.
Example: ver. 2.00 OS/2
This is not essential and is included for statistical
purposes only (the key works with all current versions).
ΓòÉΓòÉΓòÉ 13.2.2.9. Notes ΓòÉΓòÉΓòÉ
Notes:
You can send me your wish list for future versions,
or anything you like.
ΓòÉΓòÉΓòÉ 13.2.3. How to fill in BmtMicro.For ΓòÉΓòÉΓòÉ
INSTRUCTIONS FOR COMPILING BMTMICRO.FOR
The first section contains data necessary for BMT Micro (your
name, company, address, phone and fax).
The second section contains the "Registration Information" that
will be relayed to me so that I can build the key and deliver it
to you.
The third section contains the product and cost indication.
The registration is valid for any operating system.
The forth section contains data for Credit Card payment.
To avoid errors, please PRINT.
Thank you very much for your support !
ΓòÉΓòÉΓòÉ 13.2.3.1. Reg ΓòÉΓòÉΓòÉ
Reg:
The registration string you want displayed by the program,
ASCII characters only (<127).
Maximum length: 63 characters.
ΓòÉΓòÉΓòÉ 13.2.3.2. e-mail to ΓòÉΓòÉΓòÉ
e-mail to:
This is your internet e-mail address, if available.
ΓòÉΓòÉΓòÉ 13.2.3.3. Netmail to ΓòÉΓòÉΓòÉ
Netmail to:
You have to specify the complete destination field for the
netmail message.
Examples:
John Doe of 1:200/300.4
John Doe of 1:200/300.0
ΓòÉΓòÉΓòÉ 13.2.3.4. Crash to ΓòÉΓòÉΓòÉ
Crash to:
You have to specify the data necessary for crashing the
message. Usually this should be your system or your Boss
(if you are a point).
I will call as 2:332/504@fidonet.
- If your system (or your Boss) is 24h and it is in the
fidonet nodelist, you can omit this field.
- If your system is not 24h, please give me a 24h system to
which I can crash your netmail for routing.
- If the system in consideration is not in the fidonet
nodelist, please add its complete phone number and modem
type.
Examples:
1:200/400@fidonet
9:800/700@ABCnet +1-703-4567 V34, ISDNC
ΓòÉΓòÉΓòÉ 13.3. Register.For ΓòÉΓòÉΓòÉ
FastLst Registration Form
(Please PRINT)
See Register.Doc for instructions: Date: __/__/__
Name: _________________________________________________________
Reg.: _________________________________________________________
e-mail to: ____________________________________________________
Netmail to: ___________________________________________________
Crash to: _____________________________________________________
Fax: __________________________________________________________
Address: ______________________________________________________
______________________________________________________
______________________________________________________
Version: _.___ OS/2 ( ) W32 ( ) DOS32 ( )
Notes: ________________________________________________________
_______________________________________________________________
_______________________________________________________________
ΓòÉΓòÉΓòÉ 13.4. BmtMicro.For ΓòÉΓòÉΓòÉ
BMT Micro
FastLst Registration Form
*****************************************
* DO NOT SEND this form to the author ! *
*****************************************
See Register.Doc for instructions, please PRINT: Date: __/__/__
Name: __________________________________________________________
Company: _______________________________________________________
Address: _______________________________________________________
________________________________________________________________
City: ______________________ State/Province: _________________
Country: ___________________________ Postal Code: ______________
Phone: _________________________________________________________
Fax: ___________________________________________________________
REGISTRATION INFORMATION
Reg.: __________________________________________________________
e-mail to: _____________________________________________________
Netmail to: ____________________________________________________
Crash to: ______________________________________________________
Product: FastLst (by Alberto Pasquale) Price: US$ 25.00
North Carolina residents, please add 6% sales tax: +US$ __.__
Total: US$ __.__
For credit card payment only:
Circle one: VISA / Master / Discover / AMEX / Diner's Club
Credit card number : _______________________________________
Expiration date : ___/___
Authorization signature: _______________________________________
ΓòÉΓòÉΓòÉ 13.5. PsL.Crd ΓòÉΓòÉΓòÉ
FastLst Credit Card Registration Form
PSL Part number 11471
*****************************************
* DO NOT SEND this form to the author ! *
*****************************************
Please read carefully Register.Doc for instructions.
Date _________________________
Cardholder's name, exactly as it appears on the credit card:
_____________________________________________________
[Company:] _____________________________________________________
Billing address for the card:
___________________________________________________________
___________________________________________________________
___________________________________________________________
Payment by: ( ) MasterCard ( ) Visa
( ) American Express ( ) Discover Card
Card #: _______________________________ Exp. Date: __________
Signature of cardholder: _______________________________________
ΓòÉΓòÉΓòÉ 14. Sample config files ΓòÉΓòÉΓòÉ
Some example configuration files
ΓòÉΓòÉΓòÉ 14.1. Minimal Configuration ΓòÉΓòÉΓòÉ
; FastLst 2.00, (c) Copyright 1992-1997 Alberto Pasquale
; FastLst.Cfg Example
; Minimal configuration
; RegKey YourRegistrationKey
CompressCfg d:\flst\compress.cfg
InputPath d:\flst\nodelist
ArcPath d:\flst\arc
V7BugFix
Dial ; for Europe
39-59- / 5 0 ; country and district code
39- 0 60 0
- 00 300 0
End
; For North America (see the doc for more details !):
; Dial
; LocalValues 1-414- / 0 ; country and area code
; LocalExchanges 231 232 233 235 236 424
; 1-414- 1- 25
; 1- 1- 50
; - 011 250
; End
Version7+ v7 NODEX SYSOP
FidoUserLst
ArcMethod zip
ArcDiffMethod zip
PasswordFile d:\flst\fastlst.pwd
NodeList nodelist.???
NodeDiff NODEDIFF.???
ArcList nodelist.??? 1
ArcDiff nodediff.??? 2
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d (%D), %a format
NodeList REGION.033 2 ; Region 33 in zone 2
ArcList region33.???
ArcListDesc Region 33 (Italy) fido nodelist, %a format
NodeList Apw_Pnts.Lst ; Points in "Boss," format
ΓòÉΓòÉΓòÉ 14.2. Full configuration ΓòÉΓòÉΓòÉ
; FastLst 2.00, (c) Copyright 1992-1997 Alberto Pasquale
; FastLst.Cfg Example
; Full configuration
; See the documentation for more details !
; RegKey YourRegistrationKey
Priority Idle
StatusLog d:\flst\fastlst.log
CompressCfg d:\flst\compress.cfg
InputPath d:\flst\nodelist ; plain nodelists
ArcPath d:\flst\arc ; archived nodelists/nodediffs
ArcDate Creation
; MultiLineDesc 31
KillAfter
KillSource
V7BugFix
NoRedir
CostNullPhone 1000 0 ; costs for nodes with empty phone
CostVerbatimPhone 10 0 ; costs for Verbatim phones
Dial ; for Europe
LocalValues 39-59- / 0 0 ; country and district codes
LocalExchanges 21 22 ; urban exchanges
LocalExchanges 23 24
39-59- / 5 0 ; remaining district #s
39- 0 60 0 ; remaining domestic #s
43- 0043- 100 0 200 0 ; some international #s
32- 0032- 100 0 200 0 ; with higher digital costs
45- 0045- 100 0 200 0
33- 0033- 100 0 200 0
49- 0049- 100 0 200 0
44- 0044- 100 0 200 0
34- 0034- 100 0 200 0
46- 0046- 100 0 200 0
41- 0041- 100 0 200 0
1- 001- 200 0 400 0
- 00 300 0 600 0 ; remaining international #s
End
;Dial ; for America, see the Docs for further details
; LocalValues 1-510- / 0
; LocalExchanges 224 225 226 227 247 249 252 264 276
; LocalExchanges 278 293 317 353 354 416 417
;
; LocalValues 1-408- 1-408- 0
; LocalExchanges 232 251 254 258 259 262 263 272 276
; LocalExchanges 321 324 325 383 428 432 433 434
;
; LocalValues 1-415- 1-415- 0
; LocalExchanges 233 234 321 322 323 324 325 326 327
; LocalExchanges 328 329 354 424 462 473 493
;
; 1-510- / 25
; 1-408- 1-408- 25
; 1-415- 1-415- 25
; 1- 1- 100
; - 011 2000
;End
TypeDef
X75 1 Digital
ISDNC 1 Digital
V120 2 Digital
V120H 2 Digital
V120L 3 Digital
V34 4 Analog
VFC 5 Analog
V32T 6 Analog
H16 7 Analog
V32B 8 Analog
ZYX 8 Analog ; ZYX implies V32B
Z19 8 Analog
Z16 8 Analog
H14 9 Analog
V32 10 Analog
HST 11 Analog
VM 200 100 0 -\- .* vV ~\~ ": " ; VMODEM
End
; FlagDef
; V42B AB ; A & B user-flags set on nodes with V42B flag
; ENC D ; D user-flag set on nodes with ENC flag
; End
MsgLogArea d:\bbs\mail\net -$
MsgRemArea d:\bbs\mail\net -$
MsgSize 60000
MsgFromNode 2:332/504
MsgToNode 2:332/504
MsgTo Alberto Pasquale
MsgAttr P
;FidoTxt
;FidoPrn
Version7+ \bbs\v7 NODEX SYSOP
FidoUserLst
LinkOnDisk
LogStats
ArcMethod zip Lh
ArcDiffMethod zip LH
ArcExportMethod zip lh
PasswordFile d:\flst\fastlst.pwd
Phone 2:332/504 39-59-246112
Cost 2:332/504 500 0
Phone 2:332/501 alberto.com VM,CM 0
NodeList zonelist.???
NodeDiff alldiff.???
ArcList zonelist.??? 2
ArcDiff alldiff.??? 5
ArcListDesc Non-Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Non-Fido Nodediff for day %d (%D), %a format
NodeList region24.??? 2 ; Region 24 in zone 2
ArcList origr24.??? 1 ; Keep 1 origr24.l??
ArcListDesc Original Region 24 Nodelist for day %d (%D), %a format
NodeList points24.???
GermanPointList
NoPointLstPhone
NodeDiff pr24diff.???
ArcList points24.??? 3
ArcDiff pr24diff.??? 5
ArcListDesc R24 PointList for day %d (%D), %a format
ArcDiffDesc R24 PointDiff for day %d (%D), %a format
NodeList ptlist.??? ; PointList in "Boss," format
ArcList ptlist.??? 1 ; Keep 1 ptlist.l??
ArcListDesc Italian Point List for day %d (%D), %a format
NodeList nodelist.???
MsgRem SUE ; log comments beginning with S, U or E
NodeDiff NODEDIFF.???
ArcList nodelist.??? 1
ArcDiff nodediff.??? 2
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d (%D), %a format
Export region25.??? 2:25
ArcExport region25.??? 1
ArcExportDesc Region 25 %D, %a format
NodeList REGION.033 2 ; Region 33 in zone 2
MsgRem SUE
ArcList region33.???
ArcListDesc Region 33 (Italy) fido nodelist, %a format
NodeList hub.500 2:332 33 ; Hub 500 (zone 2, net 332, region 33)
NodeList MyNodes.Lst ; private list
NodeList Apw_Pnts.Lst ; Points in "Boss," format
Version7 \bbs\v7 NODEX2 SYSOP2 ; let's make a second, shorter, nodelist
PasswordFile d:\flst\fastlst.pwd
NodeList nodelist.???
NodeList REGION.033 2 ; Region 33 in zone 2
ΓòÉΓòÉΓòÉ 14.3. Compress Definition ΓòÉΓòÉΓòÉ
; Example Compress.Cfg definition file
;
; If you are already using a Compress.Cfg file with other programs,
; you do not need this one.
; Just make sure you use the correct switches to avoid case mismatch
; with case sensitive archivers, as ZIP/UNZIP.
;
; The DOS prefix is for the W32 version too.
Archiver ARC
Extension ARC
Ident 0,1a
OS2 Add arc aw5 %a %f
DOS Add pkpak -oct a %a %f
OS2 Extract arc ew %a %f
DOS Extract pkunpak /r %a %f
OS2 View arc vw %a
DOS View pkpak v %a
End Archiver
DOS Archiver PAK
DOS Extension PAK
DOS Ident -2,fe
DOS Add pak a %a %f
DOS Extract pak e /wn %a %f
DOS View pak v %a
DOS End Archiver
Archiver ZIP
Extension ZIP
Ident 0,504b0304
OS2 Add zip -jk %a %f ; store in uppercase
DOS Add pkzip -a %a %f
OS2 Extract unzip -qqnjC %a %f ; case insensitive extract
DOS Extract pkunzip -n %a %f
OS2 View unzip -v %a
DOS View pkzip -v %a
End Archiver
Archiver LH
Extension LZH
Ident 2,2d6c68 ; "-lh"
OS2 Add lh a %a %f
DOS Add lha a /m %a %f
OS2 Extract lh x %a %f /o
DOS Extract lha e /m %a %f
OS2 View lh l %a /v /o
DOS View lha l %a
End Archiver
Archiver ARJ
Extension ARJ
Ident 0,60ea
DOS Add arj a -e+ %a %f
OS2 Extract unarj e %a %f
DOS Extract arj e -n %a %f
OS2 View unarj l %a
DOS View arj l %a
End Archiver
Archiver RAR
Extension RAR
Ident 0,526172211a0700
Add rar a -ee -md64 -ep -y -std -c- %a %f
Extract rar e -o- -y -std -c- %a %f
View rar v -y -std -c- %a
End Archiver
ΓòÉΓòÉΓòÉ 15. Version 7 Plus: technical information ΓòÉΓòÉΓòÉ
Nodelist Version 7+
Version 0, May 30 1997
Alberto Pasquale, 2:332/504@fidonet.org
Thomas Waldmann, 2:2474/400@fidonet.org
TOPIC
A new nodelist standard that remains FULLY compatible with V7
applications while adding new features and resolving the major
shortcomings of V7.
ΓòÉΓòÉΓòÉ 15.1. Why V7+ ? ΓòÉΓòÉΓòÉ
0. Why V7+ ?
============
V7 is a commonly adopted standard for a "nodelist database"
(often V7 is also called a "nodelist index", but this is only
half of the truth - *.NDX is the index, but *.DAT is some sort
of database file).
V7 uses B-tree indices for sysop names and system addresses and
is really FAST.
Many software uses V7 and a totally different standard maybe
would not get adopted by programmers.
But V7 has a great drawback: it currently does not put all
information that is contained in the "raw" nodelist into the V7
database.
So if you use V7, you do NOT have all nodelist information that
you maybe WANT to use (e.g. it does not support U,Txy (FSC-0062)
and other new flags, some characters get "lost" due to the
"packing" algorithm used etc.).
This drawback will be solved with V7+ - any thing that is
present in a raw nodelist will also be present in the V7+
database - no information is lost.
V7+ also introduces a Phone Index (useful for CID lookup) and a
whole set of "links" that allow to move through the Fidonet
structure:
- Ring of "same sysop" entries
- Ring of "same phone" entries
- Pointer to "first downlink"
- List of "same downlink level"
- Full Region and Hub information
Besides V7+ introduces a semaphore method to avoid collisions
between applications and the compiler.
ΓòÉΓòÉΓòÉ 15.2. Naming Convention ΓòÉΓòÉΓòÉ
1. Naming Convention
====================
The base name is user specified; from here on it will be
referred to as <NODEX>.
Files already used by V7, that are also used by V7+:
<NODEX>.DAT The V7 / V7+ data file.
V7+ remains fully compatible with V7, but adds a new
field (8 hex digit pointer to the DTP entry) at the
end of the packed data.
<NODEX>.NDX Traditional B-tree address index.
<NODEX>.SDX Traditional B-tree sysop index (case insensitive).
For V7 compatibility, both compilers and
applications MUST be able to use SYSOP.NDX instead
of the default <NODEX>.SDX.
V7+ specific files:
<NODEX>.DTP V7+ Data file, contains complete nodelist
information and compiler-generated links.
<NODEX>.PDX B-tree Phone index (case insensitive), to be used
just as <NODEX>.SDX.
The application that finds <NODEX>.DTP can assume that a V7+
nodelist is available. It is the user responsibility to delete
old files if downgrading.
A compiler in V7+ mode MUST generate all the above files by
default (no need to specify anything more than "Version7+" and
<NODEX>).
ΓòÉΓòÉΓòÉ 15.3. V7 Database File (<NODEX>.DAT) ΓòÉΓòÉΓòÉ
2. V7 Database File (<NODEX>.DAT)
=================================
ΓòÉΓòÉΓòÉ 15.3.1. Old structure and procedure ΓòÉΓòÉΓòÉ
2.1. Old structure and procedure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
struct _vers7
{
short Zone; // Zone number
short Net; // Net number
short Node; // Node number
short HubNode; // If a point, this is point number
word CallCost; // phone company's charge
word MsgFee; // Amount charged to user for a message
word NodeFlags; // set of flags
byte ModemType; // Modem type
byte Phone_len; // length of phone number (not packed)
byte Password_len; // length of password (not packed)
byte Bname_len; // length of system name (unpacked)
byte Sname_len; // length of Sysop's name (unpacked)
byte Cname_len; // length of City's name (unpacked)
byte pack_len; // total length of packed data
byte BaudRate; // baud rate divided by 300
};
Accessing V7 data is currently done like this:
1. find the stuff in the index - result is the "datpos" value -
the offset into the <NODEX>.DAT file
2. Seek to offset <datpos> into the <NODEX>.DAT file
3. Read sizeof(struct _vers7) bytes out of the <NODEX>.DAT file
into a variable of type struct _vers7
4. Read the next <Phone_len> bytes out of the <NODEX>.DAT file
-> Phone Number
5. Read the next <Password_len> bytes out of the <NODEX>.DAT
file -> Password
6. Read the next <pack_len> bytes out of the <NODEX>.DAT file
-> some "packed" data
7. Unpack the "packed" data
8. First <Bname_len> bytes of the unpacked data contain the
System's (BBS') name
9. Next <Sname_len> bytes of the unpacked data contain the
Sysop's name
10. Next <Cname_len> bytes of the unpacked data contain the
City's name
Data layout in the <NODEX>.DAT file is like that:
<_vers7 struct>
<Not packed: Phone>
<Not packed: Password>
<Packed: <BBS name>
<Sysop name>
<City name>
>
ΓòÉΓòÉΓòÉ 15.3.2. New structure and procedure ΓòÉΓòÉΓòÉ
2.2. New structure and procedure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
struct _vers7 is NOT changed: both indexed and sequential
accesses are guaranteed compatible with V7.
There's only a slight addition in the packed data, see below.
Accessing V7/V7+ data should be done like this:
1. |
... |
10. | all the same as described in section 2.1 (compatibility!)
11. Check if there are 8 hex digits at the end of the packed
data, after <Bname_len>+<Sname_len>+<Cname_len> bytes (see
steps 7..10).
In a V7+ nodelist, you should _always_ find these 8 hex
digits at the end of the packed data, BUT a V7 nodelist
editor may have removed them from modified entries.
Applications MUST be able to handle the "missing 8 hex
digits" situation as a normal condition and proceed as
possible with the simple V7 data (some message signalling
the situation may be issued, abnormal termination is
unacceptable behaviour).
If the 8 hex digits are found, they represent an offset into
the new <NODEX>.DTP file.
Applications MUST ignore any data possibly following the 8
hex digit pointer.
Due to the V7 base-40 3:2 packing algorithm, the compilers
have to pad the data to be compressed so that its length is
a multiple of 3: it is recommended that the space (ASCII
0x20) is used.
12. Seek into <NODEX>.DTP to the offset you got in step 11.
13. Read/Process <NODEX>.DTP fields as described in section 3.
So the new data layout in the <NODEX>.DAT file is like that:
<_vers7 struct>
<Not packed: Phone>
<Not packed: Password>
<Packed: <BBS name>
<Sysop name>
<City name>
<8-hex-digit-offset into <NODEX>.DTP>
>
ΓòÉΓòÉΓòÉ 15.4. <NODEX>.DTP file layout ΓòÉΓòÉΓòÉ
3. <NODEX>.DTP file layout
==========================
Let's define some glossary:
byte 8 bit unsigned integer
word 16 bit unsigned integer (LSB first)
dword 32 bit unsigned integer (LSB first)
The <NODEX>.DTP file has the following layout:
<Header> File header
<Entry> Entry for first compiled system
<Entry> Entry for second compiled system
<Entry> Entry for third compiled system
...
ΓòÉΓòÉΓòÉ 15.4.1. <Header> ΓòÉΓòÉΓòÉ
3.1. <Header>
~~~~~~~~~~~~~
<Header> has the following layout:
<Control> Miscellaneous Information for Compatibility
<TopLink> Link to top level fidonet hierarchy
ΓòÉΓòÉΓòÉ 15.4.1.1. <Control> Structure ΓòÉΓòÉΓòÉ
3.1.1. <Control> Structure
~~~~~~~~~~~~~~~~~~~~~~~~~~
struct _DTPCtl {
word size; // Size of this control structure
byte Version; // Version of DTP file
byte AllFixSize; // sizeof (_DTPAllLnk)
byte AddFixSize; // sizeof (_DTPNodeLnk)
};
size:
This structure may be expanded in the future, so size is
provided to allow compatible positioning on the following
<TopLink> record.
Version:
This is the V7+ Version, currently 0.
The compatibility towards previous versions is guaranteed,
so correctly behaved applications will have no problems
dealing with newer versions of V7+.
When new features will be added, new applications will be
able to check for the version level of the V7+ database,
while old ones will remain compatible.
The check will be "if Version >= n then ...".
AllFixSize:
This is the size of the fixed-length structure associated
with ANY system in the nodelist. It is provided to allow
compatible positioning on the following field, in the case
of future extensions.
AddFixSize:
This is the size of the fixed-length structure associated
with Nodes only (no points) and with <TopLink>. It is
provided to allow compatible positioning on the following
field, in the case of future extensions.
ΓòÉΓòÉΓòÉ 15.4.1.2. <TopLink> ΓòÉΓòÉΓòÉ
3.1.2. <TopLink>
~~~~~~~~~~~~~~~~
V7+ has pointers to link the entire fidonet structure, from the
top coordinators to the points.
The <NODEX>.DTP header contains the link to the first (in
zone/region/net/hub/node/point order) "top level" system found
in the nodelist, usually ZC1.
struct _DTPNodeLnk {
word ndowns; // number of systems in lower level
dword FlOfs; // DAT offset of "Lower Fido Level"
};
ndowns:
The number of direct downlinks; in this case it is the
number of "top level" systems (systems that do not have
uplinks in the nodelist).
Usually it's the number of ZCs.
Please note that if you have included a Region segment and
the corresponding Zone is not included in other nodelists
compiled to the same <NODEX>.*, this RC will be a "Top
Level" system. The same happens in the case of lower level
systems that are "orphans" of the upper coordinator.
FlOfs:
Offset into <NODEX>.DAT for the first direct downlink; in
this case it's usually ZC1.
ΓòÉΓòÉΓòÉ 15.4.2. <Entry> ΓòÉΓòÉΓòÉ
3.2. <Entry>
~~~~~~~~~~~~
This is the <NODEX>.DTP entry for each and every compiled
system, pointed to by the 8-hex-digit offset found at the end of
the _vers7 packed data.
The layout is:
<Links> Fixed size info (see <Header>)
<Raw-size> word (size of following raw-line)
<Raw-nodelist-line> variable size raw nodelist line
This layout may be expanded in the future, both in the
fixed-length and variable-length sections.
Please, always use the size information found in the <Header> to
remain compatible with future V7+ extensions.
ΓòÉΓòÉΓòÉ 15.4.2.1. <Links> ΓòÉΓòÉΓòÉ
3.2.1. <Links>
~~~~~~~~~~~~~~
The layout is:
<AllLinks> Common to all entries
[<NodeLink>] Not present for Points
ΓòÉΓòÉΓòÉ 15.4.2.1.1. <AllLinks> ΓòÉΓòÉΓòÉ
3.2.1.1. <AllLinks>
~~~~~~~~~~~~~~~~~~~
The following structure is used for all the systems in the
nodelist.
struct _DTPAllLnk {
word Region; // Region
word Hub; // Hub
dword SOfs; // DAT offset of next Same SysOp entry
dword POfs; // DAT offset of next Same Phone entry
dword FeOfs; // DAT offset of next "Equal Fido Level"
byte Sn; // Number (base 0) of SysOp entry (ADR order)
byte Pn; // Number (base 0) of Phone entry (ADR order)
};
Region:
Region number, 0 if none.
Hub:
Hub number, 0 if none.
Please note that the "NodeHub" field of _vers7 may not
always be the same as this one, not only because it is
absent for points, but also because the compiler may
infer the Hub from other nodelist entries while linking
<NODEX>.DTP.
DO NOT USE NodeHub in _vers7 for reliable Hub information.
SOfs:
Offset into <NODEX>.DAT for next system with the same
SysOp name (in order of Address).
0xffffffff if none.
This is a RING link, that is the last entry points to the
first one.
POfs:
Offset into <NODEX>.DAT for next system with the same
Phone number (in order of Address).
0xffffffff if none.
This is a RING link, that is the last entry points to the
first one.
FeOfs:
Offset into <NODEX>.DAT for next system at the same
"fidonet level", that is with the same direct
uplink/coordinator.
0xffffffff if none.
This is a LIST link, that is the last entry points nowhere
(0xffffffff).
Please note that "equal level" systems are not necessarily
all of the same coordination level (all HCs or RCs etc.).
For example a ZC may have as direct downlinks (linked with
FeOfs between one another):
- his points (usually administrative entries should not
have points, but it may happen),
- Independent nodes in the Zone
- Independent HCs in the Zone
- Independent NCs in the Zone
- RCs in the zone
Sn:
Number of same-sysop entry (0 based).
0xff if no link available.
Please do NOT use Sn to check for links, use SOfs instead.
Pn:
Number of same-phone entry (0 base).
0xff if no link available.
Please do NOT use Pn to check for links, use POfs instead.
When you are looking for a SysOp or Phone that has multiple
entries in the index, you get one and then you follow the links
(SOfs, POfs) through all the remaining entries.
Since the first entry (got from the index) may be in the middle
of the "Ring", you can use Sn and Pn to know how many "lower"
entries you will find. This may be useful for keeping the
"Address order" while gathering all the information throughout
the RING.
Please note that some "common" entries (as "-Unpublished-" for
the phone number), may have more than 254 links; so be aware
that Sn and Pn may (under exceptional conditions) overflow,
arrive at 0xff and restart from 0x00.
This should be no concern when doing a normal lookup, but
"statistical programs" that list all the Rings must be careful.
The proper way to check whether you have finished the RING is to
check the new SOfs/POfs against the first encountered one; Sn/Pn
should be used for reference only.
ΓòÉΓòÉΓòÉ 15.4.2.1.2. <NodeLink> ΓòÉΓòÉΓòÉ
3.2.1.2. <NodeLink>
~~~~~~~~~~~~~~~~~~~
The following structure is absent for points, since they do not
have downlinks. It's the same structure used in the <Header> for
<TopLink>.
struct _DTPNodeLnk {
word ndowns; // number of systems in lower level
dword FlOfs; // DAT offset of "Lower Fido Level"
};
ndowns:
The number of direct downlinks.
It includes the lower level coordinators and all the
systems that, for some reason, are orphans of the upper
coordinator (not included in compilation or not existent).
Examples:
ZCs -> ZC's points
independent nodes in the zone
independent HCs in the zone
independent NCs in the zone
RCs in the zone
RCs -> RC's points
independent nodes in the region
independent HCs in the region
NCs in the region
NCs -> NC's points
independent nodes in the net
HCs in the net
HCs -> HC's points
nodes in the Hub
Node -> Node's points
FlOfs:
Offset into <NODEX>.DAT for the first direct downlink, in
"zone/region/net/hub/node/point" order.
ΓòÉΓòÉΓòÉ 15.4.2.2. <Raw-size> ΓòÉΓòÉΓòÉ
3.2.2. <Raw-size>
~~~~~~~~~~~~~~~~~
This is a word specifying the length of the following
<raw-nodelist-line> field.
ΓòÉΓòÉΓòÉ 15.4.2.3. <Raw-nodelist-line> ΓòÉΓòÉΓòÉ
3.2.3. <Raw-nodelist-line>
~~~~~~~~~~~~~~~~~~~~~~~~~~
This is the zero terminated raw nodelist line, taken verbatim
from the source nodelist; neither carriage-return nor line-feed
is present.
REQUIREMENTs for applications that use this field:
- The line's fields must be recognized ONLY by considering the
comma ',' as a separator.
- Fields containing space are to be handled normally.
- Unknown qualifiers at the start of the line (the field usued
for Hub, Host, Region, Zone) must be accepted.
- The second field (where the node number is usually placed)
may contain further information and space: it must be accepted
without error.
ΓòÉΓòÉΓòÉ 15.4.3. DTP extensions ΓòÉΓòÉΓòÉ
3.3. DTP extensions
~~~~~~~~~~~~~~~~~~~
The DTP format is suitable for backward compatible extensions.
If you would like new fields, please contact Alberto Pasquale
(2:332/504@fidonet) and/or Thomas Waldmann (2:2474/400@fidonet)
for discussion.
If the new field is considered useful, a draft for the new
version of V7+ will be issued by Alberto Pasquale.
ΓòÉΓòÉΓòÉ 15.5. <NODEX>.PDX Phone Index ΓòÉΓòÉΓòÉ
4. <NODEX>.PDX Phone Index
==========================
The purpose of the Phone Index is to allow an indexed search of
a system entry from its phone number.
This is especially useful with CID (caller ID) enabled systems.
ΓòÉΓòÉΓòÉ 15.5.1. <NODEX>.PDX format ΓòÉΓòÉΓòÉ
4.1. <NODEX>.PDX format
~~~~~~~~~~~~~~~~~~~~~~~
The index is a btree, just like those for the Address and SysOp
indices that are standard in Version 7.
Phone numbers will be indexed in the "processed" dialable form
(i.e. as in the V7 phone field) after removal of dashes.
Special non-numerical phone entries, including IP addresses and
internet domains, are indexed verbatim (the possible
translations operated by the nodelist compiler to allow the
dialing on some mailers is NOT applied to the indexed entry).
The indexing is NOT case sensitive, although the case is
retained in the index entries.
The index look-up must be done just the same way as for the SysOp
index: from the "phone number" string you obtain a pointer to
the corresponding entry in the <NODEX>.DAT.
Please be aware that multiple entries with the same "phone" are
possible, e.g for administrative akas; the Phone links in
<NODEX>.DTP allow easy browsing of all the "same phone" entries
once you have got one by index.
Currently there is no purpose in doing a case sensitive lookup;
in the case it becomes useful in the future, the application may
optionally provide settings to allow that by skipping
non-case-matching entries.
ΓòÉΓòÉΓòÉ 15.5.2. The Look-up problem ΓòÉΓòÉΓòÉ
4.2. The Look-up problem
~~~~~~~~~~~~~~~~~~~~~~~~
Since most ISDN devices do NOT report the CID as a "ready to
dial" number, some processing is required before looking up the
index.
Let's classify the CID reported by ISDN devices in various
nations into categories:
Cat A reports CID with domestic and international dialing codes,
local numbers have the area code.
Cat B reports CID with NO long distance dialing code,
local numbers have the area code.
Cat C reports CID exactly as dialable.
Cat D reports CID with NO long distance dialing code,
local numbers are exactly dialable.
I will now explain with an example:
I live in Modena, Italy;
Country code : 39
District (area) code : 59
domestic code : 0
international code : 00
Call Type A-CID B-CID Dialable
Local 059246112 59246112 246112
Domestic 0513456789 513456789 0513456789
International 00492312345 492312345 00492312345
C-CID D-CID
Local 246112 246112
Domestic 0513456789 513456789
International 00492312345 492312345
Processing needed:
Category A: for local calls we need to remove the domestic and
district codes; domestic and international calls do not need any
processing.
Category B: we need to attempt finding a domestic number then,
in case of failure, try the international one; unfortunately the
CID reported by these devices allows for some ambiguity.
Category C: no processing needed.
Category D: we need to attempt finding a local number, if not
found we look for a domestic number, if still not found we try
the international one. Even more ambigous than B.
ΓòÉΓòÉΓòÉ 15.5.3. The ALGORITHM ΓòÉΓòÉΓòÉ
4.3. The ALGORITHM
~~~~~~~~~~~~~~~~~~
The application must have configurable District/Area, domestic
and international codes; let's name them:
AreaCode
DomesticPrefix
IntlPrefix
Besides, the application must have a configurable "category",
which must have selections for cases A,B,C,D; let's name this
variable:
Category
Let "Search" be the name of a function that does the index
look-up. Please be aware that the index may contain multiple
entries with the same "phone" value (perhaps administrative
akas).
"Restore CID" means "restore the CID as got from the device".
Start:
get CID
if (category == A) {
If (CID begins with DomesticPrefix+AreaCode)
Remove DomesticPrefix and AreaCode // is local
Search
goto END
}
if (category == B) {
If (CID begins with AreaCode) { // local or intl
remove AreaCode // try local
Search
if (found)
goto END // is local
else {
Restore CID
Add IntlPrefix // try international
Search
goto END
}
} else { // domestic or intl
Add DomesticPrefix // try domestic
Search
if (found)
goto END // is domestic
else {
Restore CID // try intl
Add IntlPrefix
Search
goto END
}
}
}
if (category == C) { // no processing required
Search
goto END
}
if (category == D) {
Search // try local
if (found) // is local
goto END
else {
Add DomesticPrefix // try domestic
Search
if (found) // is domestic
goto END
else { // try international
Restore CID
Add IntlPrefix
Search
goto END
}
}
}
END: report results (pointer to NODEX.DAT or nothing found)
The Phone links in <NODEX>.DTP allow easy browsing of all
remaining "same phone" entries.
ΓòÉΓòÉΓòÉ 15.6. V7+ Semaphore ΓòÉΓòÉΓòÉ
5. V7+ Semaphore
================
To avoid collisions between the nodelist compiler and V7+
applications, a semaphore is used.
When the compiler needs exclusive access to the nodelist files,
it creates (if non existent) and keeps open in SH_DENYRW mode a
"<NODEX>.BSY" file.
When the application must access the nodelist files, it creates
(if non existent) and keeps open for reading in SH_DENYWR mode
the "<NODEX>.BSY" file.
This method allows for concurrent access by multiple programs in
"read" mode, while granting exclusive access to the compiler.
Please note that <NODEX>.BSY does NOT need to be deleted in case
of abnormal termination or power failure since it's considered
busy only while kept open.
Example for a program that must read V7+:
bsyname is the "<NODEX>.BSY" file name;
timeout is the timeout in seconds;
the file handle is returned on success, -1 on timeout
int waitopen (const char *bsyname, int timeout) // -1 on timeout
{
int ret = -1;
int i = 0;
do {
if (i > 0)
sleep (1);
if (access (bsyname, F_OK)) { // file not existent
int handle = open (bsyname, O_WRONLY | O_CREAT, S_IWRITE);
if (handle != -1)
close (handle);
}
ret = sopen (bsyname, O_RDONLY, SH_DENYWR);
i ++;
} while ((ret == -1) && (i < timeout) &&
((errno == EACCES) || (errno == ENOENT)));
// sharing violation or file not found
return ret;
}
ΓòÉΓòÉΓòÉ 15.7. Space/Time needed for V7+ database vs. usability ΓòÉΓòÉΓòÉ
6. Space/Time needed for V7+ database vs. usability
===================================================
The V7+ DTP file may be considered redundant, since it contains
the entire "source" nodelist line, that duplicates some of the
information already present in the V7 DAT file.
Let's look at the time and space overhead involved and at the
gain in usability:
Time:
Accessing V7+ is as fast as V7, if you use the normal V7 access
method (and if you are NOT interested in the additional data).
If you access the additional data in the <NODEX>.DTP file, you
have 1 direct file access more. Nothing to worry about...
Generating a V7+ database will take somewhat longer since there
is more data to be written to disk, links to be set, indices to
be prepared; on modern machines this should not be a concern.
Space:
Space needed is about twice as much as for V7, but this should
be no concern on modern machines.
Usability:
- Full and complete (no lossy compression) nodelist information
- Phone Index for easy CID lookup
- SysOp/Phone/Fidonet links for easy nodelist browsing
- Backward compatible extendability
ΓòÉΓòÉΓòÉ 15.8. Sample "C" source code (taken from BT-XE) ΓòÉΓòÉΓòÉ
7. Sample "C" source code (taken from BT-XE)
============================================
See archive v7p_src.* ...
Attention: this source code is far from being final - in fact it
is the very first V7+ implementation in BT-XE and does
not support all stuff that has been defined in this
document. But it can read and parse V7+ data and is
maybe better than no source code at all ...
ΓòÉΓòÉΓòÉ 15.9. History of this document ΓòÉΓòÉΓòÉ
8. History of this document
===========================
Draft 1->8: preliminary thoughts about possible versions of V7+.
Draft 9: completely rewritten, this should be the final
"Version_0" of V7+.
Version 0: first release version.